summaryrefslogtreecommitdiff
path: root/spec/hashie/extensions
diff options
context:
space:
mode:
authorMichael Herold <michael.j.herold@gmail.com>2018-02-04 16:39:20 -0600
committerMichael Herold <michael.j.herold@gmail.com>2018-02-05 10:58:26 -0600
commita82c594710e1bc9460d3de4d2989cb700f4c3c7f (patch)
treeb465064e4dc1223e3148f4c5e99a0edc44dc2d76 /spec/hashie/extensions
parenta9d0e0ac7b6b3362480a9004d04ad7aa167fc193 (diff)
downloadhashie-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.rb13
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