spec/helpers_spec.rb in bikepoa-tools-0.2.0 vs spec/helpers_spec.rb in bikepoa-tools-0.3.0

- old
+ new

@@ -1,22 +1,42 @@ describe BikePOA::Helpers::ForceField do - class DummySubject < Hashie::Dash - include BikePOA::Helpers::ForceField - property :number - force_integer :number - end + describe 'force integer' do - let(:dummy) { DummySubject.new } + class DummySubject < Hashie::Dash + include BikePOA::Helpers::ForceField + property :normal + property :number - describe 'force integer' do - it "accepts any value that is castable to integer" do - expect { dummy.number = '42' }.to_not raise_error(ArgumentError) - expect { dummy.number = 42 }.to_not raise_error(ArgumentError) - expect { dummy.number = 42.0 }.to_not raise_error(ArgumentError) + force_integer :number end - it "raises when the value is not castable to integer" do - expect { dummy.number = "abc" }.to raise_error(ArgumentError) - expect { dummy.number = "a12" }.to raise_error(ArgumentError) + + describe "when setting property directly" do + let(:dummy) { DummySubject.new } + + it "accepts any value that is castable to integer" do + expect { dummy.number = '42' }.to_not raise_error(ArgumentError) + expect { dummy.number = 42 }.to_not raise_error(ArgumentError) + expect { dummy.number = 42.0 }.to_not raise_error(ArgumentError) + end + it "raises when the value is not castable to integer" do + expect { dummy.number = "abc" }.to raise_error(ArgumentError) + expect { dummy.number = "a12" }.to raise_error(ArgumentError) + end + it 'lets you put anything into non-forced fields' do + expect { DummySubject.new(normal: 'abc1123') }.to_not raise_error + end + end + + describe "when loading the Dash from a hash" do + it 'accepts values castable to integer' do + expect { DummySubject.new(number: '678') }.to_not raise_error(ArgumentError) + end + it "raises when one of the forced-fields is invalid" do + expect { DummySubject.new(number: "abc") }.to raise_error(ArgumentError) + end + it 'lets you put anything into non-forced fields' do + expect { DummySubject.new(normal: 'abc1123') }.to_not raise_error + end end end end