diff options
author | Jerry Cheung <jollyjerry@gmail.com> | 2013-02-11 16:22:57 -0800 |
---|---|---|
committer | Jerry Cheung <jollyjerry@gmail.com> | 2013-02-11 16:22:57 -0800 |
commit | c2815fa066da9c29aae1c8655eb64bad44ac5fc9 (patch) | |
tree | c93586b9b5388ca3c52e60c8151d63a062e3cecd | |
parent | 60dacaa66d0de284a7522bbd6c324d37d6419c72 (diff) | |
parent | 68ed0a367c460fdd59d699d8a6cac8ca9e0cb042 (diff) | |
download | hashie-c2815fa066da9c29aae1c8655eb64bad44ac5fc9.tar.gz |
Merge pull request #27 from mattfawcett/master
Coercion does not work with MergeInitializer
-rw-r--r-- | lib/hashie/extensions/merge_initializer.rb | 4 | ||||
-rw-r--r-- | spec/hashie/extensions/coercion_spec.rb | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/hashie/extensions/merge_initializer.rb b/lib/hashie/extensions/merge_initializer.rb index f9ccc2e..19a9d28 100644 --- a/lib/hashie/extensions/merge_initializer.rb +++ b/lib/hashie/extensions/merge_initializer.rb @@ -17,7 +17,9 @@ module Hashie module MergeInitializer def initialize(hash = {}, default = nil, &block) default ? super(default) : super(&block) - update(hash) + hash.each do |key, value| + self[key] = value + end end end end diff --git a/spec/hashie/extensions/coercion_spec.rb b/spec/hashie/extensions/coercion_spec.rb index c5d932a..84a662d 100644 --- a/spec/hashie/extensions/coercion_spec.rb +++ b/spec/hashie/extensions/coercion_spec.rb @@ -17,7 +17,10 @@ describe Hashie::Extensions::Coercion do end before(:each) do - class ExampleCoercableHash < Hash; include Hashie::Extensions::Coercion end + class ExampleCoercableHash < Hash + include Hashie::Extensions::Coercion + include Hashie::Extensions::MergeInitializer + end end subject { ExampleCoercableHash } let(:instance){ subject.new } @@ -39,6 +42,13 @@ describe Hashie::Extensions::Coercion do instance[:foo].value.should == "String" instance[:foo].should_not be_coerced end + + it "should coerce when the merge initializer is used" do + subject.coerce_key :foo, Coercable + instance = subject.new(:foo => "bar") + + instance[:foo].should be_coerced + end end describe '.coerce_value' do |