def test_get_raises_better_list_access_exception(self): obj = Traverser([]) with self.assertRaises(ValueError): obj.get('bad') value = {'root': []} obj = Traverser(value) with self.assertRaises(ValueError): obj.get('root.bad')
def test_set_creates_list(self): value = {'root': {'stuff': {'users': [{'username': '******'}]}}} obj = Traverser(value) obj.set('root.stuff.parts.0.auto', 'any') self.assertEqual(obj.get('root.stuff.parts.0.auto'), 'any')
def test_set_updates_existing_node(self): value = {'root': {'users': [{'username': '******'}]}} obj = Traverser(value) obj.set('root.users', 'any') self.assertEqual(obj.get('root.users'), 'any')
def test_get_supports_dot_escaping(self): value = {'root': {'@xsi.type': 'field'}} obj = Traverser(value) self.assertEqual(obj.get('*****@*****.**'), 'field')
def test_get_forgives_missing_node(self): value = {'root': {'users': [{'username': '******'}]}} obj = Traverser(value) self.assertIsNone(obj.get('root.places'))
def test_get_traverses_list(self): value = {'root': {'users': [{'username': '******'}]}} obj = Traverser(value) self.assertEqual(obj.get('root.users.0.username'), 'jdoe')
def test_get_finds_node(self): value = {'root': {'users': [{'username': '******'}]}} obj = Traverser(value) self.assertEqual(obj.get('root.users')(), [{'username': '******'}])