def test_does_not_mutate(self): merger = package.TemplateDeepMerger() src = {'foo': 'bar'} dst = {'baz': 'buz'} merger.merge(src, dst) assert src == {'foo': 'bar'} assert dst == {'baz': 'buz'}
def test_can_merge_list(self): merger = package.TemplateDeepMerger() src = {'foo': [1, 2, 3]} dst = {} result = merger.merge(src, dst) assert result == { 'foo': [1, 2, 3], }
def test_can_replace_element(self): merger = package.TemplateDeepMerger() src = {'foo': 'bar'} dst = {'foo': 'buz'} result = merger.merge(src, dst) assert result == { 'foo': 'bar', }
def test_can_merge_without_changing_identity(self): merger = package.TemplateDeepMerger() src = {} dst = {} result = merger.merge(src, dst) assert result is not src assert result is not dst assert src is not dst
def test_merge_can_change_type(self): merger = package.TemplateDeepMerger() src = { 'key': 'foo', } dst = { 'key': 1, } result = merger.merge(src, dst) assert result == {'key': 'foo'}
def test_list_elements_are_replaced(self): merger = package.TemplateDeepMerger() src = { 'list': [{'foo': 'bar'}], } dst = { 'list': [{'foo': 'buz'}], } result = merger.merge(src, dst) assert result == { 'list': [{'foo': 'bar'}], }
def test_can_merge_nested_list(self): merger = package.TemplateDeepMerger() src = { 'foo': { 'bar': 'baz', }, } dst = { 'foo': { 'qux': [1, 2, 3, 4], }, } result = merger.merge(src, dst) assert result == { 'foo': { 'bar': 'baz', 'qux': [1, 2, 3, 4], } }
def test_can_merge_nested_elements(self): merger = package.TemplateDeepMerger() src = { 'foo': { 'bar': 'baz', }, } dst = { 'foo': { 'qux': 'quack', }, } result = merger.merge(src, dst) assert result == { 'foo': { 'bar': 'baz', 'qux': 'quack', } }