Exemple #1
0
    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']))