'Test the updates work as expected when an object is deleted
@since 3.9
@jira_ticket PYTHON-657
@expected_result the non updated column is None and the
updated column has the set value
@test_category object_mapper'

def test_collection_with_default(self):

    sync_table(ModelWithDefaultCollection)
    (udt, udt_default) = (UDT(age=1, mf={6: 6}), UDT(age=1, mf={6: 6}))
    item = ModelWithDefaultCollection.create(id=1, mf={1: 1}, dummy=1, udt=udt, udt_default=udt_default).save()
    self.assertEqual(ModelWithDefaultCollection.objects.get(id=1)._as_dict(), {'id': 1, 'dummy': 1, 'mf': {1: 1}, 'udt': udt, 'udt_default': udt_default})
    (udt, udt_default) = (UDT(age=1, mf={5: 5}), UDT(age=1, mf={5: 5}))
    item.update(mf={2: 2}, udt=udt, udt_default=udt_default)
    self.assertEqual(ModelWithDefaultCollection.objects.get(id=1)._as_dict(), {'id': 1, 'dummy': 1, 'mf': {2: 2}, 'udt': udt, 'udt_default': udt_default})
    (udt, udt_default) = (UDT(age=1, mf=None), UDT(age=1, mf=None))
    (expected_udt, expected_udt_default) = (UDT(age=1, mf={}), UDT(age=1, mf={}))
    item.update(mf=None, udt=udt, udt_default=udt_default)
    self.assertEqual(ModelWithDefaultCollection.objects.get(id=1)._as_dict(), {'id': 1, 'dummy': 1, 'mf': {}, 'udt': expected_udt, 'udt_default': expected_udt_default})
    udt_default = UDT(age=1, mf={2: 2}, dummy_udt=42)
    item = ModelWithDefaultCollection.create(id=2, dummy=2)
    self.assertEqual(ModelWithDefaultCollection.objects.get(id=2)._as_dict(), {'id': 2, 'dummy': 2, 'mf': {2: 2}, 'udt': None, 'udt_default': udt_default})
    (udt, udt_default) = (UDT(age=1, mf={1: 1, 6: 6}), UDT(age=1, mf={1: 1, 6: 6}))
    item.update(mf={1: 1, 4: 4}, udt=udt, udt_default=udt_default)
    self.assertEqual(ModelWithDefaultCollection.objects.get(id=2)._as_dict(), {'id': 2, 'dummy': 2, 'mf': {1: 1, 4: 4}, 'udt': udt, 'udt_default': udt_default})
    item.update(udt_default=None)
    self.assertEqual(ModelWithDefaultCollection.objects.get(id=2)._as_dict(), {'id': 2, 'dummy': 2, 'mf': {1: 1, 4: 4}, 'udt': udt, 'udt_default': None})
    udt_default = UDT(age=1, mf={2: 2})
    item.update(udt_default=udt_default)
    self.assertEqual(ModelWithDefaultCollection.objects.get(id=2)._as_dict(), {'id': 2, 'dummy': 2, 'mf': {1: 1, 4: 4}, 'udt': udt, 'udt_default': udt_default})
