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