def test_unknown_diff_on(self): left = AggregatedList() right = AggregatedList() runner = AggregatedDiffRunner(left.diff(right)) with pytest.raises(Exception): runner.register("qwerty", lambda p, i: True, lambda p: True)
def test_diff_delete(self): left = AggregatedList() right = AggregatedList() left.add({'a': 1}, ["qwerty"]) diff = left.diff(right) assert diff['insert'] == [] assert diff['update-insert'] == [] assert diff['update-delete'] == [] assert diff['delete'] == [{'params': {'a': 1}, 'items': ['qwerty']}]
def test_run_cond_false(self): left = AggregatedList() right = AggregatedList() right.add({'on': 'insert'}, ["qwerty"]) runner = AggregatedDiffRunner(left.diff(right)) recorder = [] runner.register("insert", lambda p, i: recorder.append('True'), lambda p: False) runner.run() assert recorder == []
def test_diff_update_insert(self): left = AggregatedList() right = AggregatedList() left.add({'a': 1}, ["qwerty1"]) right.add({'a': 1}, ["qwerty1", "qwerty2"]) diff = left.diff(right) assert diff['insert'] == [] assert diff['delete'] == [] assert diff['update-delete'] == [] assert diff['update-insert'] == [{ 'items': ['qwerty2'], 'params': { 'a': 1 } }]
def test_run(self): left = AggregatedList() right = AggregatedList() # test insert right.add({'on': 'insert'}, ["i"]) # test delete left.add({'on': 'delete'}, ["d"]) # test update-insert left.add({'on': 'update-insert'}, ["ui1"]) right.add({'on': 'update-insert'}, ["ui1", "ui2"]) # test update-delete left.add({'on': 'update-delete'}, ["ud1", "ud2"]) right.add({'on': 'update-delete'}, ["ud1"]) on_insert = [] on_delete = [] on_update_insert = [] on_update_delete = [] def recorder(l): return lambda p, i: l.append([p, i]) runner = AggregatedDiffRunner(left.diff(right)) runner.register("insert", recorder(on_insert)) runner.register("delete", recorder(on_delete)) runner.register("update-insert", recorder(on_update_insert)) runner.register("update-delete", recorder(on_update_delete)) runner.run() assert on_insert == [[{'on': 'insert'}, ['i']]] assert on_delete == [[{'on': 'delete'}, ['d']]] assert on_update_insert == [[{'on': 'update-insert'}, ['ui2']]] assert on_update_delete == [[{'on': 'update-delete'}, ['ud2']]]