def test_all_is_indexable(self):
     data = ['a', 'b', 'c']
     lm = EmbeddedManager(data)
     i = 0
     self.assertEqual('a', lm.all()[0])
     self.assertEqual('b', lm.all()[1])
     self.assertEqual('c', lm.all()[2])
 def test_all_is_an_iterator(self):
     data = ['a', 'b', 'c']
     lm = EmbeddedManager(data)
     i = 0
     for item in lm.all():
         self.assertEqual(data[i], item)
         i = i + 1
 def test_copy_with_dict(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data)
     self.assertEqual(data, lm.copy())
 def test_copy_with_list(self):
     data = [
         Dummy(id=1, name='NAME_A'),
         Dummy(id=2, name='NAME_A'),
         Dummy(id=3, name='NAME_B'),
         Dummy(id=4, name='NAME_B')
     ]
     lm = EmbeddedManager(data)
     self.assertEqual(data, lm.copy())
 def test_in_filtered_list(self):
     data = [
         Dummy(id=1, name='NAME_A'),
         Dummy(id=2, name='NAME_A'),
         Dummy(id=3, name='NAME_B'),
         Dummy(id=4, name='NAME_B')
     ]
     lm = EmbeddedManager(data)
     self.assertTrue(Dummy(id=3, name='NAME_B') in lm.filter(name='NAME_B'))
     self.assertTrue(Dummy(id=4, name='NAME_B') in lm.filter(name='NAME_B'))
 def test_items(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data)
     for key, value in lm.items():
         self.assertEqual(data[key], value)
 def test_create_with_no_key_in_dict_with_type(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data, type=Dummy)
     with self.assertRaises(ValueError):
         created = lm.create(id=5, name='CREATED')
 def test_create_with_no_type(self):
     data = [
         Dummy(id=1, name='NAME_A'),
         Dummy(id=2, name='NAME_A'),
         Dummy(id=3, name='NAME_B'),
         Dummy(id=4, name='NAME_B')
     ]
     lm = EmbeddedManager(data)
     with self.assertRaisesRegex(TypeError,
                                 'No type defined for EmbeddedManager'):
         lm.create(id=5, name='CREATED')
 def test_keys_in_filtered_dict(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data)
     self.assertEqual(2, len(lm.filter(name='NAME_B').keys()))
     self.assertTrue('key3' in lm.filter(name='NAME_B').keys())
     self.assertTrue('key4' in lm.filter(name='NAME_B').keys())
 def test_get_with_field(self):
     data = [
         Dummy(id=1, name='NAME_A', check='NAME_X'),
         Dummy(id=2, name='NAME_A', check='NAME_A'),
         Dummy(id=3, name='NAME_B', check='NAME_X'),
         Dummy(id=4, name='NAME_B', check='NAME_X'),
         Dummy(id=5, name='NAME_B', check='NAME_B'),
         Dummy(id=6, name='NAME_B', check='NAME_B')
     ]
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(2, lm.get(name=F('check')).id)
 def test_get_from_dict_with_field(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A', check='NAME_X'),
         'key2': Dummy(id=2, name='NAME_A', check='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B', check='NAME_X'),
         'key4': Dummy(id=4, name='NAME_B', check='NAME_X'),
         'key5': Dummy(id=5, name='NAME_B', check='NAME_B'),
         'key6': Dummy(id=6, name='NAME_B', check='NAME_B')
     }
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(2, lm.get(name=F('check')).id)
 def test_copy_with_filtered_list(self):
     data = [
         Dummy(id=1, name='NAME_A'),
         Dummy(id=2, name='NAME_A'),
         Dummy(id=3, name='NAME_B'),
         Dummy(id=4, name='NAME_B')
     ]
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(
         [Dummy(id=3, name='NAME_B'),
          Dummy(id=4, name='NAME_B')],
         lm.filter(name='NAME_B').copy())
 def test_clear(self):
     data = [
         Dummy(id=1, name='NAME_A', check='NAME_X'),
         Dummy(id=2, name='NAME_A', check='NAME_A'),
         Dummy(id=3, name='NAME_B', check='NAME_X'),
         Dummy(id=4, name='NAME_B', check='NAME_X'),
         Dummy(id=5, name='NAME_B', check='NAME_B'),
         Dummy(id=6, name='NAME_B', check='NAME_B')
     ]
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(6, len(lm))
     lm.clear()
     self.assertEqual(0, len(lm))
 def test_values(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data)
     self.assertTrue(data['key1'] in lm.values())
     self.assertTrue(data['key2'] in lm.values())
     self.assertTrue(Dummy(id=3, name='NAME_B') in lm.values())
     self.assertTrue(Dummy(id=4, name='NAME_B') in lm.values())
     self.assertEqual(4, len(lm.values()))
 def test_keys(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data)
     self.assertTrue('key1' in lm.keys())
     self.assertTrue('key2' in lm.keys())
     self.assertTrue('key3' in lm.keys())
     self.assertTrue('key4' in lm.keys())
     self.assertEqual(4, len(lm.keys()))
 def test_copy_with_filtered_dict(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(
         {
             'key3': Dummy(id=3, name='NAME_B'),
             'key4': Dummy(id=4, name='NAME_B')
         },
         lm.filter(name='NAME_B').copy())
 def test_filter_with_field(self):
     data = [
         Dummy(id=1, name='NAME_A', check='NAME_X'),
         Dummy(id=2, name='NAME_A', check='NAME_A'),
         Dummy(id=3, name='NAME_B', check='NAME_X'),
         Dummy(id=4, name='NAME_B', check='NAME_X'),
         Dummy(id=5, name='NAME_B', check='NAME_B'),
         Dummy(id=6, name='NAME_B', check='NAME_B')
     ]
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(3, len(lm.filter(name=F('check'))))
     self.assertEqual(2, lm.filter(name=F('check'))[0].id)
     self.assertEqual(5, lm.filter(name=F('check'))[1].id)
     self.assertEqual(6, lm.filter(name=F('check'))[2].id)
 def test_filter_dict_with_field(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A', check='NAME_X'),
         'key2': Dummy(id=2, name='NAME_A', check='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B', check='NAME_X'),
         'key4': Dummy(id=4, name='NAME_B', check='NAME_X'),
         'key5': Dummy(id=5, name='NAME_B', check='NAME_B'),
         'key6': Dummy(id=6, name='NAME_B', check='NAME_B')
     }
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(3, len(lm.filter(name=F('check'))))
     self.assertEqual(2, lm.filter(name=F('check'))['key2'].id)
     self.assertEqual(5, lm.filter(name=F('check'))['key5'].id)
     self.assertEqual(6, lm.filter(name=F('check'))['key6'].id)
    def test_evaluate(self):
        obj = Dummy(id=1,
                    name='NAME_1',
                    flag=True,
                    link=Dummy(id=2, name='NAME_2'),
                    objects=EmbeddedManager([
                        Dummy(id=3, name='NAME_3'),
                        Dummy(id=4, name='NAME_4'),
                        Dummy(id=5, name='NAME_5'),
                    ]))
        e_id = Expression('id')
        e_name = Expression('name')
        e_flag = Expression('flag')
        e_link = Expression('link')
        e_link_id = Expression('link.id')
        e_link_name = Expression('link.name')
        e_objects = Expression('objects')

        self.assertEqual(1, e_id.evaluate(obj))
        self.assertEqual('NAME_1', e_name.evaluate(obj))
        self.assertEqual(True, e_flag.evaluate(obj))
        self.assertEqual(2, e_link.evaluate(obj).id)
        self.assertEqual('NAME_2', e_link.evaluate(obj).name)
        self.assertEqual(2, e_link_id.evaluate(obj))
        self.assertEqual('NAME_2', e_link_name.evaluate(obj))
        self.assertEqual(3, e_objects.evaluate(obj).all()[0].id)
        self.assertEqual('NAME_3', e_objects.evaluate(obj).all()[0].name)
        self.assertEqual(4, e_objects.evaluate(obj).all()[1].id)
        self.assertEqual('NAME_4', e_objects.evaluate(obj).all()[1].name)
        self.assertEqual(5, e_objects.evaluate(obj).all()[2].id)
        self.assertEqual('NAME_5', e_objects.evaluate(obj).all()[2].name)
 def test_create_with_key_in_dict_with_type(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data, type=Dummy)
     created = lm.create('key5', id=5, name='CREATED')
     self.assertIsNotNone(created)
     self.assertTrue(isinstance(created, Dummy))
     self.assertEqual(5, created.id)
     self.assertEqual('CREATED', created.name)
     self.assertEqual(5, len(lm))
     got = lm.get('key5')
     self.assertEqual(5, got.id)
     self.assertEqual('CREATED', got.name)
 def test_create_with_type(self):
     data = [
         Dummy(id=1, name='NAME_A'),
         Dummy(id=2, name='NAME_A'),
         Dummy(id=3, name='NAME_B'),
         Dummy(id=4, name='NAME_B')
     ]
     lm = EmbeddedManager(data, type=Dummy)
     created = lm.create(id=5, name='CREATED')
     self.assertIsNotNone(created)
     self.assertTrue(isinstance(created, Dummy))
     self.assertEqual(5, created.id)
     self.assertEqual('CREATED', created.name)
     self.assertEqual(5, len(lm))
     got = lm.get(id=5)
     self.assertEqual(5, got.id)
     self.assertEqual('CREATED', got.name)
 def test_length(self):
     data = [
         Dummy(id=1, name='NAME_A'),
         Dummy(id=2, name='NAME_A'),
         Dummy(id=3, name='NAME_B'),
         Dummy(id=4, name='NAME_B')
     ]
     lm = EmbeddedManager(data)
     self.assertEqual(4, len(lm))
 def test_length_of_dict(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data)
     self.assertEqual(4, len(lm))
 def test_append(self):
     data = [
         Dummy(id=1, name='NAME_A'),
         Dummy(id=2, name='NAME_A'),
         Dummy(id=3, name='NAME_B'),
         Dummy(id=4, name='NAME_B')
     ]
     lm = EmbeddedManager(data)
     lm.append(Dummy(id=5, name='NAME_C'))
     self.assertEqual(5, len(lm))
     self.assertEqual(5, lm.get(id=5).id)
     self.assertEqual('NAME_C', lm.get(id=5).name)
     self.assertEqual(1, len(lm.filter(name='NAME_C')))
     self.assertEqual(5, lm.filter(name='NAME_C')[0].id)
     self.assertEqual('NAME_C', lm.filter(name='NAME_C')[0].name)
 def test_find_embedded_list_names(self):
     test = FDummy(id=1,
                   name='NAME_1',
                   embedded=EmbeddedManager([
                       FDummy(id=2, name='NAME_2'),
                       FDummy(id=3, name='NAME_3'),
                       FDummy(id=4, name='NAME_4'),
                   ]))
     result = test.__find__('embedded.name')
     self.assertEqual(3, len(result))
     self.assertTrue('NAME_2' in result)
     self.assertTrue('NAME_3' in result)
     self.assertTrue('NAME_4' in result)
 def test_get_item(self):
     data = ['a', 'b', 'c']
     lm = EmbeddedManager(data)
     self.assertEqual('a', lm.get('a'))
     self.assertEqual('b', lm.get('b'))
     self.assertEqual('c', lm.get('c'))
     with self.assertRaises(DoesNotExist):
         lm.get('z')
 def test_get_item_from_dict(self):
     data = {'key1': 'a', 'key2': 'b', 'key3': 'c'}
     lm = EmbeddedManager(data)
     self.assertEqual('a', lm.get('key1'))
     self.assertEqual('b', lm.get('key2'))
     self.assertEqual('c', lm.get('key3'))
     with self.assertRaises(DoesNotExist):
         lm.get('key4')
 def test_get_with_keys(self):
     data = [
         Dummy(id=1, name='NAME_A'),
         Dummy(id=2, name='NAME_A'),
         Dummy(id=3, name='NAME_B'),
         Dummy(id=4, name='NAME_B')
     ]
     lm = EmbeddedManager(data)
     self.assertTrue(isinstance(lm.get(id=1, name='NAME_A'), Dummy))
     self.assertEqual(1, lm.get(id=1, name='NAME_A').id)
     self.assertEqual('NAME_A', lm.get(id=1, name='NAME_A').name)
     with self.assertRaises(DoesNotExist):
         lm.get(id=3, name='NAME_A')
 def test_get_with_keys_from_dict(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A'),
         'key2': Dummy(id=2, name='NAME_A'),
         'key3': Dummy(id=3, name='NAME_B'),
         'key4': Dummy(id=4, name='NAME_B')
     }
     lm = EmbeddedManager(data)
     self.assertTrue(isinstance(lm.get(id=1, name='NAME_A'), Dummy))
     self.assertEqual(1, lm.get(id=1, name='NAME_A').id)
     self.assertEqual('NAME_A', lm.get(id=1, name='NAME_A').name)
     with self.assertRaises(DoesNotExist):
         lm.get(id=3, name='NAME_A')
 def test_evaluate_with_criteria_1(self):
     obj = Dummy(id=1,
                 name='NAME_1',
                 flag=True,
                 link=Dummy(id=2, name='NAME_2'),
                 objects=EmbeddedManager([
                     Dummy(id=3, name='NAME_3'),
                     Dummy(id=4, name='NAME_4'),
                     Dummy(id=5, name='NAME_5'),
                 ]))
     e_objects_idx_0 = Expression('objects[0]')
     self.assertEqual('objects', e_objects_idx_0.name)
     self.assertEqual(0, e_objects_idx_0.index)
     self.assertIsNone(e_objects_idx_0.criteria)
     self.assertEqual(3, e_objects_idx_0.evaluate(obj).id)