def test_removed(self): """ Shows that when a key is removed from the other dict that the result is ChangeType.REMOVED """ key = "a" value = "value" base = {key: value} other = {key: None} result = detect_changed(base=base, other=other, key=key) # For a source of "server" we should not consider the removal a change if the value is None self.assertEqual(result, True) result = detect_changed(base=base, other=other, key=key, source="local") # For a source of "local" we should consider the removal a change self.assertEqual(result, True)
def test_same_empty(self): """ Shows that when a key is not in either other or base the result is ChangeType.SAME """ key = "a" non_existant_key = "b" value = "value" next_value = "next_value" base = {key: value} other = {key: next_value} result = detect_changed(base=base, other=other, key=non_existant_key, source='server') self.assertEqual(result, UNSUPPORTED) result = detect_changed(base=base, other=other, key=non_existant_key, source='local') self.assertEqual(result, False)
def test_same(self): """ Shows that when a key is the same as in the other dict that the result is ChangeType.SAME. """ key = "a" value = "value" base = {key: value} other = {key: value} result = detect_changed(base=base, other=other, key=key) self.assertEqual(result, False)
def test_absence_of_field_means_no_change(self): """ Shows when the server does not support a particular type of field, local controls it. """ key = "a" value = "value" base = {key: value} other = {} result = detect_changed(base=base, other=other, key=key) self.assertEqual(result, UNSUPPORTED)
def test_added(self): """ Shows that when a key is added to the other dictionary that the result is ChangeType.Added """ key = "a" value = "value" base = {} other = {key: value} result = detect_changed(base=base, other=other, key=key) self.assertEqual(result, True)
def test_changed(self): """ Shows that when a key is changed from the other dict that the result is ChangeType.CHANGED """ key = "a" value = "value" next_value = "next_value" base = {key: value} other = {key: next_value} result = detect_changed(base=base, other=other, key=key) self.assertEqual(result, True)
def test_lists_out_of_order(self): """ Shows that when two lists are out of order but contain the same elements it is not considered a change. """ key = "a" value = ["value1", "value2"] next_value = value[::-1] base = {key: value} other = {key: next_value} result = detect_changed(base=base, other=other, key=key) self.assertEqual(result, False)