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_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_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_get_with_dict(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A', flag='A'),
         'key2': Dummy(id=2, name='NAME_A', flag='B'),
         'key3': Dummy(id=3, name='NAME_B', flag='C'),
         'key4': Dummy(id=4, name='NAME_B', flag='A'),
         'key5': Dummy(id=5, name='NAME_B', flag='B'),
         'key6': Dummy(id=6, name='NAME_B', flag='C')
     }
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(5, lm.filter(name='NAME_B').get(flag='B').id)
     self.assertEqual('NAME_B', lm.filter(name='NAME_B').get(flag='B').name)
     self.assertEqual('B', lm.filter(name='NAME_B').get(flag='B').flag)
     with self.assertRaises(DoesNotExist):
         lm.filter(name='NAME_A').get(flag='C')
 def test_filter_get(self):
     data = [
         Dummy(id=1, name='NAME_A', flag='A'),
         Dummy(id=2, name='NAME_A', flag='B'),
         Dummy(id=3, name='NAME_B', flag='C'),
         Dummy(id=4, name='NAME_B', flag='A'),
         Dummy(id=5, name='NAME_B', flag='B'),
         Dummy(id=6, name='NAME_B', flag='C')
     ]
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(5, lm.filter(name='NAME_B').get(flag='B').id)
     self.assertEqual('NAME_B', lm.filter(name='NAME_B').get(flag='B').name)
     self.assertEqual('B', lm.filter(name='NAME_B').get(flag='B').flag)
     with self.assertRaises(DoesNotExist):
         lm.filter(name='NAME_A').get(flag='C')
 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_chained_filter(self):
     data = [
         Dummy(id=1, name='NAME_A', flag='A'),
         Dummy(id=2, name='NAME_A', flag='B'),
         Dummy(id=3, name='NAME_B', flag='C'),
         Dummy(id=4, name='NAME_B', flag='A'),
         Dummy(id=5, name='NAME_B', flag='B'),
         Dummy(id=6, name='NAME_B', flag='C')
     ]
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(1, len(lm.filter(name='NAME_B').filter(flag='B')))
     self.assertEqual(5, lm.filter(name='NAME_B').filter(flag='B')[0].id)
     self.assertEqual('NAME_B',
                      lm.filter(name='NAME_B').filter(flag='B')[0].name)
     self.assertEqual('B',
                      lm.filter(name='NAME_B').filter(flag='B')[0].flag)
 def test_chained_filter_with_dict(self):
     data = {
         'key1': Dummy(id=1, name='NAME_A', flag='A'),
         'key2': Dummy(id=2, name='NAME_A', flag='B'),
         'key3': Dummy(id=3, name='NAME_B', flag='C'),
         'key4': Dummy(id=4, name='NAME_B', flag='A'),
         'key5': Dummy(id=5, name='NAME_B', flag='B'),
         'key6': Dummy(id=6, name='NAME_B', flag='C')
     }
     lm = EmbeddedManager(data, type=Dummy)
     self.assertEqual(1, len(lm.filter(name='NAME_B').filter(flag='B')))
     self.assertEqual(5,
                      lm.filter(name='NAME_B').filter(flag='B')['key5'].id)
     self.assertEqual(
         'NAME_B',
         lm.filter(name='NAME_B').filter(flag='B')['key5'].name)
     self.assertEqual(
         'B',
         lm.filter(name='NAME_B').filter(flag='B')['key5'].flag)
 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_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_update(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)
     lm.update({
         'key4': Dummy(id=5, name='NAME_C'),
         'key5': Dummy(id=6, name='NAME_C'),
     })
     self.assertEqual(5, len(lm))
     self.assertEqual(5, lm.get('key4').id)
     self.assertEqual('NAME_C', lm.get('key4').name)
     self.assertEqual(6, lm.get(id=6).id)
     self.assertEqual('NAME_C', lm.get('key5').name)
     self.assertEqual(2, len(lm.filter(name='NAME_C')))
     self.assertEqual(5, lm.filter(name='NAME_C')['key4'].id)
     self.assertEqual('NAME_C', lm.filter(name='NAME_C')['key4'].name)
     self.assertEqual(6, lm.filter(name='NAME_C')['key5'].id)
     self.assertEqual('NAME_C', lm.filter(name='NAME_C')['key5'].name)
 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_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.assertEqual(1, len(lm.filter(id=1, name='NAME_A')))
        self.assertTrue(
            isinstance(lm.filter(id=1, name='NAME_A')['key1'], Dummy))
        self.assertEqual(1, lm.filter(id=1, name='NAME_A')['key1'].id)
        self.assertEqual('NAME_A', lm.filter(id=1, name='NAME_A')['key1'].name)

        self.assertEqual(2, len(lm.filter(name='NAME_A')))
        self.assertTrue(isinstance(lm.filter(name='NAME_A')['key1'], Dummy))
        self.assertEqual(1, lm.filter(name='NAME_A')['key1'].id)
        self.assertEqual('NAME_A', lm.filter(name='NAME_A')['key1'].name)
        self.assertTrue(isinstance(lm.filter(name='NAME_A')['key2'], Dummy))
        self.assertEqual(2, lm.filter(name='NAME_A')['key2'].id)
        self.assertEqual('NAME_A', lm.filter(name='NAME_A')['key2'].name)
    def test_filter_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.assertEqual(1, len(lm.filter(id=1, name='NAME_A')))
        self.assertTrue(isinstance(lm.filter(id=1, name='NAME_A')[0], Dummy))
        self.assertEqual(1, lm.filter(id=1, name='NAME_A')[0].id)
        self.assertEqual('NAME_A', lm.filter(id=1, name='NAME_A')[0].name)

        self.assertEqual(2, len(lm.filter(name='NAME_A')))
        self.assertTrue(isinstance(lm.filter(name='NAME_A')[0], Dummy))
        self.assertEqual(1, lm.filter(name='NAME_A')[0].id)
        self.assertEqual('NAME_A', lm.filter(name='NAME_A')[0].name)
        self.assertTrue(isinstance(lm.filter(name='NAME_A')[1], Dummy))
        self.assertEqual(2, lm.filter(name='NAME_A')[1].id)
        self.assertEqual('NAME_A', lm.filter(name='NAME_A')[1].name)