def test_m2m_dict_diff_with_new_and_old_state_different(self): """Test where old state and new state contains different elements.""" new_state={'toppings': [{'id': 1, 'name': 'ceboloa'}, {'id': 5, 'name': 'cogumelo'}, {'id': 6, 'name': 'abobrinha'}, {'id': 8, 'name': 'codorna'}, {'id': 9, 'name': 'banana'}, {'id': 10, 'name': 'abacaxi'}, ]} old_state={'toppings': [{'id': 1, 'name': 'ceboloa'}, {'id': 5, 'name': 'cogumelo'}, {'id': 6, 'name': 'abobrinha'}, {'id': 8, 'name': 'codorna'}, {'id': 9, 'name': 'banana'}, {'id': 11, 'name': 'abacate'}, ]} expected_response = [{'toppings.10.id': [None, 10], 'toppings.10.name': [None, 'abacaxi']}, {'toppings.11.id': [11, None], 'toppings.11.name': ['abacate', None]}] diff = m2m_audit.m2m_dict_diff(old_state, new_state) self.assertEqual(diff, expected_response)
def test_m2m_dict_diff_with_empty_new_state(self): """Test where new state is an empty dict.""" new_state={} old_state={'toppings': [{'id': 1, 'name': 'ceboloa'}, {'id': 5, 'name': 'cogumelo'}, {'id': 6, 'name': 'abobrinha'}, {'id': 8, 'name': 'codorna'}, {'id': 9, 'name': 'banana'}, {'id': 11, 'name': 'abacate'}, ]} expected_response = [ {'toppings.1.id': [1, None], 'toppings.1.name': ['ceboloa', None]}, {'toppings.11.id': [11, None], 'toppings.11.name': ['abacate', None]}, {'toppings.5.id': [5, None], 'toppings.5.name': ['cogumelo', None]}, {'toppings.6.id': [6, None], 'toppings.6.name': ['abobrinha', None]}, {'toppings.8.id': [8, None], 'toppings.8.name': ['codorna', None]}, {'toppings.9.id': [9, None], 'toppings.9.name': ['banana', None]}, ] diff = m2m_audit.m2m_dict_diff(old_state, new_state) self.assertEqual(diff, expected_response)
def test_m2m_dict_diff_with_empty_old_state(self): """Test where old state is an empty dict.""" new_state={'toppings': [{'id': 1, 'name': 'ceboloa'}, {'id': 5, 'name': 'cogumelo'}, {'id': 6, 'name': 'abobrinha'}, {'id': 8, 'name': 'codorna'}, {'id': 9, 'name': 'banana'}, {'id': 10, 'name': 'abacaxi'}, ]} old_state={} expected_response = [ {'toppings.1.id': [None, 1], 'toppings.1.name': [None, 'ceboloa']}, {'toppings.10.id': [None, 10], 'toppings.10.name': [None, 'abacaxi']}, {'toppings.5.id': [None, 5], 'toppings.5.name': [None, 'cogumelo']}, {'toppings.6.id': [None, 6], 'toppings.6.name': [None, 'abobrinha']}, {'toppings.8.id': [None, 8], 'toppings.8.name': [None, 'codorna']}, {'toppings.9.id': [None, 9], 'toppings.9.name': [None, 'banana']}, ] diff = m2m_audit.m2m_dict_diff(old_state, new_state) self.assertEqual(diff, expected_response)
def test_m2m_dict_diff_with_old_and_new_state_the_same(self): """ test where old state and new state are the same. no change detected! """ new_state={u'toppings': [{u'id': 1, 'name': u'ceboloa'}, {u'id': 5, 'name': u'cogumelo'}, {u'id': 6, 'name': u'abobrinha'}, {u'id': 8, 'name': u'codorna'}, {u'id': 9, 'name': u'banana'}, {u'id': 10, 'name': u'abacaxi'}, ]} old_state={u'toppings': [{u'id': 1, 'name': u'ceboloa'}, {u'id': 5, 'name': u'cogumelo'}, {u'id': 6, 'name': u'abobrinha'}, {u'id': 8, 'name': u'codorna'}, {u'id': 9, 'name': u'banana'}, {u'id': 10, 'name': u'abacaxi'}, ]} expected_response = [] diff = m2m_audit.m2m_dict_diff(old_state, new_state) self.assertEqual(diff, expected_response)
def test_m2m_dict_diff_with_new_and_old_state_different(self): """ test where old state and new state contains different elements """ new_state={u'toppings': [{u'id': 1, 'name': u'ceboloa'}, {u'id': 5, 'name': u'cogumelo'}, {u'id': 6, 'name': u'abobrinha'}, {u'id': 8, 'name': u'codorna'}, {u'id': 9, 'name': u'banana'}, {u'id': 10, 'name': u'abacaxi'}, ]} old_state={u'toppings': [{u'id': 1, 'name': u'ceboloa'}, {u'id': 5, 'name': u'cogumelo'}, {u'id': 6, 'name': u'abobrinha'}, {u'id': 8, 'name': u'codorna'}, {u'id': 9, 'name': u'banana'}, {u'id': 11, 'name': u'abacate'}, ]} expected_response = [{u'toppings.10.id': [None, 10], u'toppings.10.name': [None, u'abacaxi']}, {u'toppings.11.id': [11, None], u'toppings.11.name': [u'abacate', None]}] expected_response = self.sort_dict_collection(expected_response) diff = m2m_audit.m2m_dict_diff(old_state, new_state) diff = self.sort_dict_collection(diff) self.assertEqual(diff, expected_response)
def test_m2m_dict_diff_with_empty_old_state(self): """ test where old state is an empty dict """ new_state={u'toppings': [{u'id': 1, 'name': u'ceboloa'}, {u'id': 5, 'name': u'cogumelo'}, {u'id': 6, 'name': u'abobrinha'}, {u'id': 8, 'name': u'codorna'}, {u'id': 9, 'name': u'banana'}, {u'id': 10, 'name': u'abacaxi'}, ]} old_state={} expected_response = [{u'toppings.10.id': [None, 10], u'toppings.10.name': [None, u'abacaxi']}, {u'toppings.5.id': [None, 5], u'toppings.5.name': [None, u'cogumelo']}, {u'toppings.6.id': [None, 6], u'toppings.6.name': [None, u'abobrinha']}, {u'toppings.1.id': [None, 1], u'toppings.1.name': [None, u'ceboloa']}, {u'toppings.8.id': [None, 8], u'toppings.8.name': [None, u'codorna']}, {u'toppings.9.id': [None, 9], u'toppings.9.name': [None, u'banana']}] expected_response = self.sort_dict_collection(expected_response) diff = m2m_audit.m2m_dict_diff(old_state, new_state) diff = self.sort_dict_collection(diff) self.assertEqual(diff, expected_response)
def test_m2m_dict_diff_with_empty_new_state(self): """ test where new state is an empty dict """ new_state={} old_state={u'toppings': [{u'id': 1, 'name': u'ceboloa'}, {u'id': 5, 'name': u'cogumelo'}, {u'id': 6, 'name': u'abobrinha'}, {u'id': 8, 'name': u'codorna'}, {u'id': 9, 'name': u'banana'}, {u'id': 11, 'name': u'abacate'}, ]} expected_response = [{u'toppings.11.id': [11, None], u'toppings.11.name': [u'abacate', None]}, {u'toppings.5.id': [5, None], u'toppings.5.name': [u'cogumelo', None]}, {u'toppings.6.id': [6, None], u'toppings.6.name': [u'abobrinha', None]}, {u'toppings.1.id': [1, None], u'toppings.1.name': [u'ceboloa', None]}, {u'toppings.8.id': [8, None], u'toppings.8.name': [u'codorna', None]}, {u'toppings.9.id': [9, None], u'toppings.9.name': [u'banana', None]}] expected_response = self.sort_dict_collection(expected_response) diff = m2m_audit.m2m_dict_diff(old_state, new_state) diff = self.sort_dict_collection(diff) self.assertEqual(diff, expected_response)
def test_m2m_dict_multiple_field_diff(self): """ test where old state and new state contains multiple fields, with one field having a changed value """ new_state = { u'foo': [ {u'id': 1, 'name': u'bar' } ], u'toppings': [ {u'id': 1, 'name': u'ceboloa'}, {u'id': 5, 'name': u'cogumelo'}, {u'id': 6, 'name': u'abobrinha'}, {u'id': 8, 'name': u'codorna'}, {u'id': 9, 'name': u'banana'}, {u'id': 10, 'name': u'abcdef'}, ] } old_state = { u'foo': [ {u'id': 1, 'name': u'bar' } ], u'toppings': [ {u'id': 1, 'name': u'ceboloa'}, {u'id': 5, 'name': u'cogumelo'}, {u'id': 6, 'name': u'abobrinha'}, {u'id': 8, 'name': u'codorna'}, {u'id': 9, 'name': u'banana'}, {u'id': 10, 'name': u'abcdesccc'}, ] } expected_response = [{u'toppings.10.name': [u'abcdesccc', u'abcdef']}] diff = m2m_audit.m2m_dict_diff(old_state, new_state) self.assertEqual(diff, expected_response)