require File.expand_path(File.dirname(__FILE__) + '/spec_helper') describe "NewsSchleuder" do context "while send(:verify_requirements)ing" do before(:each) do NewsSchleuder.any_instance.expects(:verify_requirements) end it "verifies the requirements" do NewsSchleuder.new({}).send(:verify_requirements) end end context "while verifying requirements" do it "fails without a newsletter file option" do lambda { NewsSchleuder.new({}).send(:verify_requirements) }.should raise_error end it "fails on an non-existant newsletter file" do lambda { NewsSchleuder.new({:newsletter => '/tmp/does_not_exist'}).send(:verify_requirements) }.should raise_error end context "with a present newsletter file" do before(:each) do datadir = File.join(File.dirname(__FILE__),'data') Dir.mkdir datadir unless File.directory?(datadir) @newsletter_file = File.join(datadir,'newsletter_test') File.unlink @newsletter_file if File.exists?(@newsletter_file) end it "fails if newsletter file contains not all necessary infos" do File.open(@newsletter_file, 'w'){|f| f << "subject: 'Some news'" } lambda { NewsSchleuder.new({:newsletter => @newsletter_file}).send(:verify_requirements) }.should raise_error("Newsletter should contain subject and body") File.open(@newsletter_file, 'w'){|f| f << "body: 'read news'" } lambda { NewsSchleuder.new({:newsletter => @newsletter_file}).send(:verify_requirements) }.should raise_error("Newsletter should contain subject and body") end context "with a valid newsletter file" do before(:each) do NewsSchleuder.any_instance.stubs(:mail_template).returns({"subject" => 'Some news', 'body' => 'read da news'}) end it "should fail on a missing schleuder config" do lambda { NewsSchleuder.new({:newsletter => @newsletter_file}).send(:verify_requirements) }.should raise_error end it "should fail on a broken schleuder config" do NewsSchleuder.any_instance.stubs(:schleuder_config).returns({"subject" => 'Some news', 'body' => 'read da news'}) lambda { NewsSchleuder.new({:newsletter => @newsletter_file}).send(:verify_requirements) }.should raise_error("Schleuder config should contain myaddr and pgp_password") end context "with a valid schleuder config" do before(:each) do NewsSchleuder.any_instance.stubs(:schleuder_config).returns({"myaddr" => 'blub','gpg_password' => 'ff'}) end it "should fail on broken members list" do NewsSchleuder.any_instance.stubs(:members).returns("member2") lambda { NewsSchleuder.new({:newsletter => @newsletter_file}).send(:verify_requirements) }.should raise_error("Members list should contain an array of members") end context "with a valid membes list" do before(:each) do NewsSchleuder.any_instance.stubs(:members).returns(["member2"]) end it "should be happy" do lambda { NewsSchleuder.new({:newsletter => @newsletter_file}).send(:verify_requirements) }.should_not raise_error end end end end end end end