From 5515cf8a6b17b4c21835a1cb6304cb048ccbf438 Mon Sep 17 00:00:00 2001 From: Seperman Date: Thu, 6 Jul 2023 06:50:05 -0700 Subject: [PATCH] report repetition still has issues --- tests/test_ignore_order.py | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/tests/test_ignore_order.py b/tests/test_ignore_order.py index b5464234..41e41665 100644 --- a/tests/test_ignore_order.py +++ b/tests/test_ignore_order.py @@ -176,24 +176,44 @@ def test_list_difference_ignore_order_report_repetition(self): } assert result == ddiff - # TODO: fix repeition report - def test_nested_list_ignore_order_report_repetition_wrong_currently(self): + def test_nested_list_ignore_order_report_repetition(self): t1 = [1, 2, [3, 4]] t2 = [[4, 3, 3], 2, 1] - ddiff = DeepDiff(t1, t2, ignore_order=True, report_repetition=True) + ddiff = DeepDiff(t1, t2, ignore_order=True, report_repetition=False) + assert not ddiff + + ddiff2 = DeepDiff(t1, t2, ignore_order=True, report_repetition=True) result = { 'repetition_change': { 'root[2][0]': { 'old_repeat': 1, + 'new_repeat': 2, + 'old_indexes': [0], 'new_indexes': [1, 2], - 'old_indexes': [1], - 'value': 3, - 'new_repeat': 2 + 'value': 3 } } } - assert result != ddiff - assert {"root[2][0]"} == ddiff.affected_paths + assert result == ddiff2 + assert {"root[2][0]"} == ddiff2.affected_paths + + @pytest.mark.skip + def test_nested_list_and_dict_ignore_order_report_repetition(self): + """ + This test shows that ignore order is not doing the right thing. + + It should have said that root[1] and root[2] are removed. + """ + t1 = [{"id": 1}, {"id": 1}, {"id": 1}] + t2 = [{"id": 1, "name": 1}] + ddiff = DeepDiff(t1, t2, ignore_order=True) + result = {'dictionary_item_added': ["root[0]['name']"]} + assert result == ddiff + + # Here there is nothing that is "repeated" in an iterable + ddiff2 = DeepDiff(t1, t2, ignore_order=True, report_repetition=True) + assert result == ddiff2 + assert {"root[2][0]"} == ddiff2.affected_paths def test_list_of_unhashable_difference_ignore_order(self): t1 = [{"a": 2}, {"b": [3, 4, {1: 1}]}]