Пример #1
0
 def test_not_in(self):
     x1 = Mock(foo=Mock(
         bar='PUBLISHED',
         baz='PENDING',
     ))
     self.assertTrue(Q(foo__bar__not_in={'PENDING', 'X', 'Y', 'Z'})(x1))
     self.assertFalse(Q(foo__baz__not_in={'PENDING', 'X', 'Y', 'Z'})(x1))
Пример #2
0
 def test_not_in(self):
     x1 = Mock(foo=Mock(
         bar='PUBLISHED',
         baz='PENDING',
     ))
     assert Q(foo__bar__not_in={'PENDING', 'X', 'Y', 'Z'})(x1)
     assert not Q(foo__baz__not_in={'PENDING', 'X', 'Y', 'Z'})(x1)
Пример #3
0
 def test_nested_fields(self):
     obj = Mock(
         author=Mock(
             full_name='George Costanza',
             is_staff=True,
             rank=3.03,
             violations=None,
         ),
         tags=['abc', 'def', 'ghi'],
     )
     self.assertTrue(
         Q(author__is_staff__eq=True,
           author__full_name__contains=' ',
           author__full_name__startswith='George',
           author__full_name__endswith='Costanza',
           author__rank__gt=2.3,
           author__violations__is=None,
           tags__contains='abc')(obj))
     self.assertFalse(
         Q(author__is_staff__eq=True,
           author__full_name__contains=' ',
           author__full_name__startswith='George',
           author__full_name__endswith='Costanza',
           author__rank__gt=2.3,
           author__violations__is=None,
           tags__contains='zzz')(obj))
     self.assertFalse(
         Q(author__is_staff__eq=False,
           author__full_name__contains=' ',
           author__full_name__startswith='George',
           author__full_name__endswith='Costanza',
           author__rank__gt=2.3,
           author__violations__is=None)(obj))
Пример #4
0
 def test_now_contains(self):
     x1 = Mock(foo=Mock(bar='The quick brown fox',
                        baz='The quick brown fox'), )
     x1._previous_version = Mock(foo=Mock(
         bar='The quick red fox',
         baz='The quick brown fox',
     ))
     self.assertTrue(Q(foo__bar__now_contains='brown')(x1))
     self.assertFalse(Q(foo__baz__now_contains='brown')(x1))
Пример #5
0
 def test_now_startswith(self):
     x1 = Mock(foo=Mock(
         bar='The quick brown fox',
         baz='The quick brown fox',
     ))
     x1._previous_version = Mock(foo=Mock(
         bar='The lazy brown fox',
         baz='The quick brown fox',
     ))
     self.assertTrue(Q(foo__bar__now_startswith='The quick')(x1))
     self.assertFalse(Q(foo__baz__now_startswith='The quick')(x1))
Пример #6
0
 def test_now_in(self):
     x1 = Mock(foo=Mock(
         bar='PUBLISHED',
         baz='PUBLISHED',
     ))
     x1._previous_version = Mock(foo=Mock(
         bar='PENDING',
         baz='PUBLISHED',
     ))
     assert Q(foo__bar__now_in={'PUBLISHED', 'X', 'Y', 'Z'})(x1)
     assert not Q(foo__baz__now_in={'PUBLISHED', 'X', 'Y', 'Z'})(x1)
Пример #7
0
 def test_now_endswith(self):
     x1 = Mock(foo=Mock(
         bar='The quick brown fox',
         baz='The quick brown fox',
     ))
     x1._previous_version = Mock(foo=Mock(
         bar='The lazy red fox',
         baz='The lazy brown fox',
     ))
     assert Q(foo__bar__now_endswith='brown fox')(x1)
     assert not Q(foo__baz__now_endswith='brown fox')(x1)
Пример #8
0
    def test_nested_Q_objects(self):
        x = Mock(foo=Mock(bar=1, baz=2))
        q1 = Q(Q(foo__x__eq=True), foo__bar__eq=1) & Q(foo__baz__eq=2)
        q2 = Q(foo__bar__eq=1) & Q(foo__baz__eq=3)
        q3 = Q(foo__baz__eq=3) | Q(foo__bar__eq=1)
        q4 = Q(foo__bar__eq=1) & Q(Q(foo__x__ne=True), foo__baz__eq=2)
        self.assertTrue(q1(x))
        self.assertFalse(q2(x))
        self.assertTrue((~q2)(x))

        self.assertTrue(q3(x))
        self.assertFalse(q4(x))
Пример #9
0
    def test_nested_Q_objects(self):
        x = Mock(foo=Mock(bar=1, baz=2))
        q1 = Q(Q(foo__x__eq=True), foo__bar__eq=1) & Q(foo__baz__eq=2)
        q2 = Q(foo__bar__eq=1) & Q(foo__baz__eq=3)
        q3 = Q(foo__baz__eq=3) | Q(foo__bar__eq=1)
        q4 = Q(foo__bar__eq=1) & Q(Q(foo__x__ne=True), foo__baz__eq=2)
        assert q1(x)
        assert not q2(x)
        assert (~q2)(x)

        assert q3(x)
        assert not q4(x)
Пример #10
0
 def test_now_not_in(self):
     x1 = Mock(foo=Mock(
         bar='PUBLISHED',
         baz='PUBLISHED',
     ))
     x1._previous_version = Mock(foo=Mock(
         bar='PENDING',
         baz='PUBLISHED',
     ))
     self.assertTrue(
         Q(foo__bar__now_not_in={'PENDING', 'X', 'Y', 'Z'})(x1), )
     self.assertFalse(
         Q(foo__baz__now_not_in={'PENDING', 'X', 'Y', 'Z'})(x1), )
Пример #11
0
    def test_now_eq(self):
        x1 = Mock(foo=Mock(bar=1, baz=2))
        x1._previous_version = Mock(foo=Mock(bar=0, baz=2))
        q = Q(foo__bar__now_eq=1)
        assert q(x1)

        x2 = Mock(foo=Mock(bar=1, baz=2))
        x2._previous_version = Mock(foo=Mock(bar=1, baz=2))
        assert not q(x2)

        x3 = Mock(state1='PUBLISHED', state2='PUBLISHED')
        x3._previous_version = Mock(
            state1='PENDING', state2='PUBLISHED',
        )
        assert Q(state1__now_eq='PUBLISHED')(x3)
        assert not Q(state2__now_eq='PUBLISHED')(x3)
Пример #12
0
    def test_now_eq(self):
        x1 = Mock(foo=Mock(bar=1, baz=2))
        x1._previous_version = Mock(foo=Mock(bar=0, baz=2))
        q = Q(foo__bar__now_eq=1)
        self.assertTrue(q(x1))

        x2 = Mock(foo=Mock(bar=1, baz=2))
        x2._previous_version = Mock(foo=Mock(bar=1, baz=2))
        self.assertFalse(q(x2))

        x3 = Mock(state1='PUBLISHED', state2='PUBLISHED')
        x3._previous_version = Mock(
            state1='PENDING',
            state2='PUBLISHED',
        )
        self.assertTrue(Q(state1__now_eq='PUBLISHED')(x3))
        self.assertFalse(Q(state2__now_eq='PUBLISHED')(x3))
Пример #13
0
 def test_all_must_match(self):
     obj = Mock(
         full_name='George Costanza',
         is_staff=True,
         rank=3.03,
         violations=None,
     )
     self.assertTrue(
         Q(is_staff__eq=True,
           full_name__contains=' ',
           full_name__startswith='George',
           full_name__endswith='Costanza',
           rank__gt=2.3,
           violations__is=None)(obj))
     self.assertFalse(
         Q(is_staff__eq=False,
           full_name__contains=' ',
           full_name__startswith='George',
           full_name__endswith='Costanza',
           rank__gt=2.3,
           violations__is=None)(obj))
Пример #14
0
    def test_eq__False(self):
        assert not Q(foo__eq=False)(Mock(foo=True))
        assert not Q(foo__eq=False)(Mock(foo=30))
        assert not Q(foo__eq=False)(Mock(foo='foo'))

        assert Q(foo__eq=False)(Mock(foo=''))
        assert Q(foo__eq=False)(Mock(foo=None))
        assert Q(foo__eq=False)(Mock(foo=0))
Пример #15
0
    def test_eq__False(self):
        self.assertFalse(Q(foo__eq=False)(Mock(foo=True)))
        self.assertFalse(Q(foo__eq=False)(Mock(foo=30)))
        self.assertFalse(Q(foo__eq=False)(Mock(foo='foo')))

        self.assertTrue(Q(foo__eq=False)(Mock(foo='')))
        self.assertTrue(Q(foo__eq=False)(Mock(foo=None)))
        self.assertTrue(Q(foo__eq=False)(Mock(foo=0)))
Пример #16
0
 def test_missing_attr(self):
     with pytest.raises(AttributeError):
         Q(foo__eq=30)(object())
Пример #17
0
 def test_now_is_not(self):
     x1 = Mock(foo=Mock(bar=30, baz=30))
     x1._previous_version = Mock(foo=Mock(bar=None, baz=10))
     assert Q(foo__bar__now_is_not=None)(x1)
     assert not Q(foo__baz__now_is_not=None)(x1)
Пример #18
0
 def test_endswith(self):
     assert Q(foo__endswith='_')(Mock(foo='the_quick_'))
     assert not Q(foo__endswith='_')(Mock(foo='the!quick!'))
Пример #19
0
 def test_contains(self):
     assert Q(foo__contains='_')(Mock(foo='the_quick'))
     assert not Q(foo__contains='_')(Mock(foo='the!quick'))
Пример #20
0
    def test_gt(self):
        assert Q(foo__gt=30)(Mock(foo=31))

        assert not Q(foo__gt=30)(Mock(foo=30))
Пример #21
0
    def test_eq(self):
        assert Q(foo__eq=30)(Mock(foo=30))

        assert not Q(foo__eq=30)(Mock(foo=10))
        assert not Q(foo__eq=30)(Mock(foo=None))
Пример #22
0
 def test_missing_op(self):
     with pytest.raises(ValueError):
         Q(foo=30)(Mock())
Пример #23
0
    def test_ne(self):
        assert Q(foo__ne=30)(Mock(foo=20))
        assert Q(foo__ne=30)(Mock(foo=None))

        assert not Q(foo__ne=30)(Mock(foo=30))
Пример #24
0
 def test_now_ne(self):
     x1 = Mock(foo=Mock(bar=1, baz=1))
     x1._previous_version = Mock(foo=Mock(bar=0, baz=2))
     assert Q(foo__bar__now_ne=2)(x1)
     assert not Q(foo__baz__now_ne=2)(x1)
Пример #25
0
    def test_lte(self):
        assert Q(foo__lte=30)(Mock(foo=29))
        assert Q(foo__lte=30)(Mock(foo=30))

        assert not Q(foo__lte=30)(Mock(foo=31))
Пример #26
0
 def test_now_gt(self):
     x1 = Mock(foo=Mock(bar=22, baz=22))
     x1._previous_version = Mock(foo=Mock(bar=10, baz=42))
     assert Q(foo__bar__now_gt=20)(x1)
     assert not Q(foo__baz__now_gt=20)(x1)
Пример #27
0
 def test_startswith(self):
     assert Q(foo__startswith='_')(Mock(foo='_the_quick'))
     assert not Q(foo__startswith='_')(Mock(foo='!the!quick'))
Пример #28
0
 def test_missing_op__nested(self):
     with pytest.raises(ValueError):
         Q(foo__bar__baz=30)(Mock())
Пример #29
0
 def test_is(self):
     obj = object()
     assert Q(foo__is=None)(Mock(foo=None))
     assert Q(foo__is=obj)(Mock(foo=obj))
     assert not Q(foo__is=None)(Mock(foo=0))
     assert not Q(foo__is=obj)(Mock(foo=object()))
Пример #30
0
 def test_now_lte(self):
     x1 = Mock(foo=Mock(bar=22, baz=22))
     x1._previous_version = Mock(foo=Mock(bar=42, baz=12))
     assert Q(foo__bar__now_lte=22)(x1)
     assert not Q(foo__baz__now_lte=22)(x1)