diff options
author | Michael Herold <michael.j.herold@gmail.com> | 2018-02-04 16:39:20 -0600 |
---|---|---|
committer | Michael Herold <michael.j.herold@gmail.com> | 2018-02-05 10:58:26 -0600 |
commit | a82c594710e1bc9460d3de4d2989cb700f4c3c7f (patch) | |
tree | b465064e4dc1223e3148f4c5e99a0edc44dc2d76 /spec/hashie/extensions | |
parent | a9d0e0ac7b6b3362480a9004d04ad7aa167fc193 (diff) | |
download | hashie-a82c594710e1bc9460d3de4d2989cb700f4c3c7f.tar.gz |
Ensure IndifferentAccess is injected after merge
During non-destructive merges (i.e. `#merge`), the `IndifferentAccess` mixin was
failing to inject itself into the resulting Hash. This caused a `NoMethodError`
to be thrown when attempting to perform the action.
Now, we properly inject the mixin when necessary so the `#merge` method works.
Diffstat (limited to 'spec/hashie/extensions')
-rw-r--r-- | spec/hashie/extensions/indifferent_access_spec.rb | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/spec/hashie/extensions/indifferent_access_spec.rb b/spec/hashie/extensions/indifferent_access_spec.rb index a4c2f43..46b2a65 100644 --- a/spec/hashie/extensions/indifferent_access_spec.rb +++ b/spec/hashie/extensions/indifferent_access_spec.rb @@ -49,6 +49,19 @@ describe Hashie::Extensions::IndifferentAccess do expect(merged_hash[:cat]).to eq('meow') expect(merged_hash['cat']).to eq('meow') end + + it 'injects the resulting new Hash with IndifferentAccess' do + hash = IndifferentHashWithMergeInitializer.new( + :cat => 'meow', + 'dog' => { name: 'Mango', sound: 'woof' } + ) + + dog = hash[:dog] + merged = dog.merge(foo: 'bar') + + expect(merged[:foo]).to eq('bar') + expect(merged['foo']).to eq('bar') + end end describe '#merge!' do |