spec/settings_spec.rb in figleaf-0.0.1 vs spec/settings_spec.rb in figleaf-0.0.2

- old
+ new

@@ -77,16 +77,78 @@ end }.should raise_error end end - describe "self.load_described_class" do - it "should load google analytics" do - Dir.should_receive(:glob).and_return(["config/described_class/some_service.yml"]) - described_class.should_receive(:env).and_return("test") - YAML.should_receive(:load_file).and_return({"test" => "foo"}) + describe "self.load_settings" do + let(:configuration) { + { + "test" => { + "foo" => "bar", + "bool_true" => true, + "bool_false" => false + } + } + } + + before do + Dir.stub(:glob).and_return(["config/described_class/some_service.yml"]) + described_class.stub(:env).and_return("test") + YAML.stub(:load_file).and_return(configuration) + described_class.load_settings - described_class.some_service.should == "foo" end + + it "should load some service" do + described_class.some_service["foo"].should == "bar" + end + + it "should load indifferently the key names" do + described_class.some_service["foo"].should == "bar" + described_class.some_service[:foo].should == "bar" + end + + it "should create foo as a method" do + described_class.some_service.foo.should == "bar" + end + + it "should create bool_true? and return true" do + described_class.some_service.bool_true?.should be_true + end + + it "should create bool_false? and return false" do + described_class.some_service.bool_false?.should be_false + end + + it "should work for arrays as well" do + YAML.stub(:load_file).and_return({ "test" => [1, 2] }) + described_class.load_settings + described_class.some_service.should == [1, 2] + end + + it "and for plain strings" do + YAML.stub(:load_file).and_return({ "test" => "Hello, World!" }) + described_class.load_settings + described_class.some_service.should == "Hello, World!" + end + + it "and for booleans (true)" do + YAML.stub(:load_file).and_return({ "test" => true }) + described_class.load_settings + described_class.some_service.should be_true + end + + it "and for booleans (false)" do + YAML.stub(:load_file).and_return({ "test" => false }) + described_class.load_settings + described_class.some_service.should be_false + end + + it "should raise exception when loading an undefined value" do + YAML.stub(:load_file).and_return({ "test" => {} }) + described_class.load_settings + expect { described_class.some_service.blah }.to raise_error NoMethodError + end + end end