Ejemplo n.º 1
0
 def test_nest_with_wrong_keys(self):
     l = [
         {
             'id': 1,
             'parent_id': None,
             'name': 'John'
         },
         {
             'id': 2,
             'parent_id': 1,
             'name': 'Frank'
         },
         {
             'id': 3,
             'parent_id': 2,
             'name': 'Tony'
         },
         {
             'id': 4,
             'parent_id': 3,
             'name': 'Jimmy'
         },
         {
             'id': 5,
             'parent_id': 1,
             'name': 'Sam'
         },
         {
             'id': 6,
             'parent_id': 3,
             'name': 'Charles'
         },
         {
             'id': 7,
             'parent_id': 2,
             'name': 'Bob'
         },
         {
             'id': 8,
             'parent_id': 3,
             'name': 'Paul'
         },
         {
             'id': 9,
             'parent_id': None,
             'name': 'Michael'
         },
     ]
     with self.assertRaises(ValueError):
         n = _nest(l, 'id', 'id', 'children')
     with self.assertRaises(ValueError):
         n = _nest(l, 'id', 'parent_id', 'id')
     with self.assertRaises(ValueError):
         n = _nest(l, 'id', 'parent_id', 'parent_id')
Ejemplo n.º 2
0
 def nest(self,
          key,
          id_key='id',
          parent_id_key='parent_id',
          children_key='children'):
     """
     Nest a list of dicts at the given key and return a new nested list
     using the specified keys to establish the correct items hierarchy.
     """
     return _nest(self[key], id_key, parent_id_key, children_key)
Ejemplo n.º 3
0
 def test_nest_with_wrong_input(self):
     l = {'id': 1, 'parent_id': None, 'name': 'John'}
     with self.assertRaises(ValueError):
         d = _nest(l, 'id', 'parent_id', 'children')
     l = [
         [
             {
                 'id': 1,
                 'parent_id': None,
                 'name': 'John'
             },
         ],
         [
             {
                 'id': 2,
                 'parent_id': 1,
                 'name': 'Frank'
             },
         ],
     ]
     with self.assertRaises(ValueError):
         d = _nest(l, 'id', 'parent_id', 'children')
Ejemplo n.º 4
0
 def test_nest(self):
     l = [
         {
             'id': 1,
             'parent_id': None,
             'name': 'John'
         },
         {
             'id': 2,
             'parent_id': 1,
             'name': 'Frank'
         },
         {
             'id': 3,
             'parent_id': 2,
             'name': 'Tony'
         },
         {
             'id': 4,
             'parent_id': 3,
             'name': 'Jimmy'
         },
         {
             'id': 5,
             'parent_id': 1,
             'name': 'Sam'
         },
         {
             'id': 6,
             'parent_id': 3,
             'name': 'Charles'
         },
         {
             'id': 7,
             'parent_id': 2,
             'name': 'Bob'
         },
         {
             'id': 8,
             'parent_id': 3,
             'name': 'Paul'
         },
         {
             'id': 9,
             'parent_id': None,
             'name': 'Michael'
         },
     ]
     l_clone = _clone(l)
     n = _nest(l, 'id', 'parent_id', 'children')
     r = [
         {
             'id':
             1,
             'parent_id':
             None,
             'name':
             'John',
             'children': [
                 {
                     'id':
                     2,
                     'parent_id':
                     1,
                     'name':
                     'Frank',
                     'children': [
                         {
                             'id':
                             3,
                             'parent_id':
                             2,
                             'name':
                             'Tony',
                             'children': [
                                 {
                                     'id': 4,
                                     'parent_id': 3,
                                     'name': 'Jimmy',
                                     'children': [],
                                 },
                                 {
                                     'id': 6,
                                     'parent_id': 3,
                                     'name': 'Charles',
                                     'children': [],
                                 },
                                 {
                                     'id': 8,
                                     'parent_id': 3,
                                     'name': 'Paul',
                                     'children': [],
                                 },
                             ],
                         },
                         {
                             'id': 7,
                             'parent_id': 2,
                             'name': 'Bob',
                             'children': [],
                         },
                     ],
                 },
                 {
                     'id': 5,
                     'parent_id': 1,
                     'name': 'Sam',
                     'children': [],
                 },
             ]
         },
         {
             'id': 9,
             'parent_id': None,
             'name': 'Michael',
             'children': [],
         },
     ]
     self.assertEqual(l, l_clone)
     self.assertEqual(n, r)