def test_apply_django_filter(self): qs = Mock() db = DjangoBackend() db.apply_django_filter(qs, EqualsCondition('a', 1)) assert qs.filter.called
def test_apply(self): all_qs = Mock() manager = Mock() manager.all = Mock(return_value=all_qs) db = DjangoBackend() db.apply(Query([EqualsCondition('a', 1)]), manager) assert manager.all.called # Mock() isn't an instance of Manager, so .all() must be called assert all_qs.filter.called
def test_to_q(self): db = DjangoBackend() assert db.to_q(EqualsCondition('a', 1)).children == [('a', 1)] assert db.to_q(GreaterThanCondition('a', 0)).children == [('a__gt', 0)] assert db.to_q(GreaterThanOrEqualCondition('a', 1)).children == [('a__gte', 1)] assert db.to_q(LessThanCondition('a', 2)).children == [('a__lt', 2)] assert db.to_q(LessThanOrEqualCondition('a', 1)).children == [('a__lte', 1)] q = db.to_q(AndOperator(EqualsCondition('a', 1), GreaterThanCondition('a', 0))) assert len(q.children) == 2 assert q.children[0].children == [('a', 1)] assert q.children[1].children == [('a__gt', 0)] assert q.connector == 'AND' q = db.to_q(OrOperator(EqualsCondition('a', 1), GreaterThanCondition('a', 0))) assert len(q.children) == 2 assert q.children[0].children == [('a', 1)] assert q.children[1].children == [('a__gt', 0)] assert q.connector == 'OR' with pytest.raises(Exception): db.to_q(False)
def test_supports(self): assert DjangoBackend.supports(QuerySet()) assert DjangoBackend.supports(Manager()) assert not DjangoBackend.supports(Q())
def test_to_q(self): db = DjangoBackend() assert db.to_q(EqualsCondition('a', 1)).children == [('a', 1)] assert db.to_q(GreaterThanCondition('a', 0)).children == [('a__gt', 0)] assert db.to_q(GreaterThanOrEqualCondition('a', 1)).children == [ ('a__gte', 1) ] assert db.to_q(LessThanCondition('a', 2)).children == [('a__lt', 2)] assert db.to_q(LessThanOrEqualCondition('a', 1)).children == [('a__lte', 1)] q = db.to_q( AndOperator(EqualsCondition('a', 1), GreaterThanCondition('a', 0))) assert len(q.children) == 2 assert q.children[0].children == [('a', 1)] assert q.children[1].children == [('a__gt', 0)] assert q.connector == 'AND' q = db.to_q( OrOperator(EqualsCondition('a', 1), GreaterThanCondition('a', 0))) assert len(q.children) == 2 assert q.children[0].children == [('a', 1)] assert q.children[1].children == [('a__gt', 0)] assert q.connector == 'OR' with pytest.raises(Exception): db.to_q(False)