diff --git a/lib/simple_mapper/attribute/pattern.rb b/lib/simple_mapper/attribute/pattern.rb index 5f2ee6d..60df818 100644 --- a/lib/simple_mapper/attribute/pattern.rb +++ b/lib/simple_mapper/attribute/pattern.rb @@ -12,7 +12,7 @@ def pattern=(value) end def source_value(object) - object.simple_mapper_source.inject({}) do |hash, keyval| + object.simple_mapper_source.inject(new_collection) do |hash, keyval| hash[from_simple_key(keyval[0])] = keyval[1] if pattern.match(keyval[0].to_s) hash end diff --git a/test/unit/attribute_pattern_test.rb b/test/unit/attribute_pattern_test.rb index 8585222..faa47bd 100644 --- a/test/unit/attribute_pattern_test.rb +++ b/test/unit/attribute_pattern_test.rb @@ -54,6 +54,11 @@ class SimpleMapperAttributePatternTest < Test::Unit::TestCase assert_equal({}, @instance.source_value(@object)) end + should 'get its container value from :new_collection' do + @instance.expects(:new_collection).returns(container = stub('container')) + assert_equal(container, @instance.source_value(@object)) + end + should 'return hash with key/value pairs for only the keys matching pattern' do expected = {:a => 'A', :abc => 'ABC', :aarp => 'AARP'} @source_values.merge! expected