def test_recursive_update_dict(self): """ """ from max.utils.dicts import RUDict from max.models import User actor = User.from_object(None, {'username': '******', 'displayName': 'Sheldon'}) old_dict = { 'level1_key': { 'level2_key': { 'level3_key': {}, 'level3_value': 54 }, 'level2_value': [] }, 'actor': {} } new_dict = { 'level1_key': { 'level2_key': { 'level3_key': { 'new_value': 'new' }, }, 'level2_key2': {'value': 3} }, 'actor': actor } rdict = RUDict(old_dict) rdict.update(new_dict) self.assertIsInstance(rdict['actor'], User) self.assertEqual(rdict['level1_key']['level2_value'], []) self.assertEqual(rdict['level1_key']['level2_key']['level3_value'], 54) self.assertEqual(rdict['level1_key']['level2_key']['level3_key']['new_value'], 'new') self.assertEqual(rdict['level1_key']['level2_key2']['value'], 3) self.assertNotEqual(id(rdict['level1_key']), id(new_dict['level1_key']['level2_key'])) self.assertNotEqual(id(rdict['level1_key']['level2_key']), id(new_dict['level1_key']['level2_key'])) self.assertNotEqual(id(rdict['level1_key']['level2_key2']), id(new_dict['level1_key']['level2_key2'])) self.assertEqual(id(rdict['level1_key']['level2_key']['level3_key']['new_value']), id(new_dict['level1_key']['level2_key']['level3_key']['new_value'])) self.assertEqual(id(rdict['actor']), id(new_dict['actor']))