def test_merge_overlapped_objects_second_object_takes_priority(): # Arrange nested_dict1 = { "level1prop1": 1, "level2": { "level2prop1": 2, "level3": { "level3prop1": 3, } } } nested_dict2 = { "level1prop1": 4, "level2": { "level2prop1": 5, "level3": { "level3prop2": 6, } } } dict_view1 = ObjectDictView(nested_dict1) dict_view2 = ObjectDictView(nested_dict2) # Act dict_view1.merge(dict_view2) # Assert assert dict_view1.level1prop1 == 4 assert dict_view1.level2.level2prop1 == 5 assert dict_view1.level2.level3.level3prop1 == 3 assert dict_view1.level2.level3.level3prop2 == 6
def test_merge_two_disjoint_objects_returns_a_union_object(): # Arrange nested_dict1 = { "level1prop1": 1, "level2": { "level2prop1": 2, "level3": { "level3prop1": 3, } } } nested_dict2 = { "level1prop2": 4, "level2": { "level2prop2": 5, "level3": { "level3prop2": 6, } } } dict_view1 = ObjectDictView(nested_dict1) dict_view2 = ObjectDictView(nested_dict2) # Act dict_view1.merge(dict_view2) # Assert assert dict_view1.level1prop1 == 1 assert dict_view1.level1prop2 == 4 assert dict_view1.level2.level2prop1 == 2 assert dict_view1.level2.level2prop2 == 5 assert dict_view1.level2.level3.level3prop1 == 3 assert dict_view1.level2.level3.level3prop2 == 6