spec/mc_settings_spec.rb in mc-settings-0.1.0 vs spec/mc_settings_spec.rb in mc-settings-0.1.1

- old
+ new

@@ -8,11 +8,11 @@ Setting.reload( :files => ["default.yml", "environments/test.yml"], :path => "config/settings", :local => true) end - + it 'should return test specific values' do Setting.available_settings['one'].should == "test" Setting.one.should == "test" Setting['one'].should == "test" end @@ -20,18 +20,17 @@ it "should handle custom values overriding everything else" do Setting.seven.should == "seven from custom" end it "handles multiple values" do - Setting['six'].should == {"default"=>"default value", "extra"=>"extra"} + Setting['six'].should == {"default"=>"default value", "extra"=>"recursively overriden", "deep_level"=>{"value"=>"even deeper level"}} Setting.available_settings['six']['default'].should == "default value" - Setting.available_settings['six']['extra'].should == "extra" Setting.seven.should == "seven from custom" end it "should support symbols as keys" do - Setting[:six].should == {"default"=>"default value", "extra"=>"extra"} + Setting[:six].should == {"default"=>"default value", "extra"=>"recursively overriden"} end it "handles default key" do Setting.default_setting.should == 1 Setting['seven']['default'].should == "seven from custom" @@ -46,34 +45,63 @@ end it "should returns false correctly" do Setting.flag_false.should be(false) end + + it "should merge keys recursivelly" do + Setting.six(:extra).should == "recursively overriden" + Setting.six(:deep_level)[:value] = "even deeper level" + end + + it "should create keys if it does not exist" do + Setting.test_specific.should == "exist" + end end + context "When running with threads" do + it "should keep its values" do + 3.times do |time| + Thread.new { + Proc.new{ + Setting.available_settings.shoud_not be_empty + } + } + end + end + end + + context "When running inside a proc" do + it "should keep its values" do + Proc.new{ + Setting.available_settings.shoud_not be_empty + } + end + end + context "Test from file" do before :each do Setting.reload( - :files => ['sample.yml'], - :path => File.join(File.dirname(__FILE__)) + '/fixtures' + :files => ['sample.yml'], + :path => File.join(File.dirname(__FILE__)) + '/fixtures' ) end it 'should support [] syntax' do Setting['tax']['default'].should == 0.0 - Setting['tax'].should == { 'default' => 0.0, 'california' => 7.5 } + Setting['tax'].should == {'default' => 0.0, 'california' => 7.5} end it 'should support method invocation syntax' do Setting.tax.should == 0.0 - Setting.tax(:default).should == Setting.tax - Setting.tax('default').should == Setting.tax - Setting.tax(:california).should == 7.5 + Setting.tax(:default).should == Setting.tax + Setting.tax('default').should == Setting.tax + Setting.tax(:california).should == 7.5 - Setting.states.should == ['CA', 'WA', 'NY'] - Setting.states(:default).should == Setting.states - Setting.states(:ship_to).should == ['CA', 'NY'] + Setting.states.should == ['CA', 'WA', 'NY'] + Setting.states(:default).should == Setting.states + Setting.states(:ship_to).should == ['CA', 'NY'] end it 'should correctly process Boolean values' do Setting.boolean_true?.should be(true) Setting.boolean_true.should == 4 \ No newline at end of file