summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Cheung <jollyjerry@gmail.com>2013-02-11 16:22:57 -0800
committerJerry Cheung <jollyjerry@gmail.com>2013-02-11 16:22:57 -0800
commitc2815fa066da9c29aae1c8655eb64bad44ac5fc9 (patch)
treec93586b9b5388ca3c52e60c8151d63a062e3cecd
parent60dacaa66d0de284a7522bbd6c324d37d6419c72 (diff)
parent68ed0a367c460fdd59d699d8a6cac8ca9e0cb042 (diff)
downloadhashie-c2815fa066da9c29aae1c8655eb64bad44ac5fc9.tar.gz
Merge pull request #27 from mattfawcett/master
Coercion does not work with MergeInitializer
-rw-r--r--lib/hashie/extensions/merge_initializer.rb4
-rw-r--r--spec/hashie/extensions/coercion_spec.rb12
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