def test_combining_empty_query(): # when Django combines an empty with an empty, it will only output one. expected = EmptyQuery() query = Q() & Q() expanded = expand_query(FakeModel, query) assert are_equal(expected, expanded) assert wrap(expanded).as_python(None)
def test_query(): expected = True query = Q(int_field__gt=20) wrapped = wrap(query) instance = ControlFlowModel(int_field=50) assert expected == wrapped.as_python(instance)
def test_negated_empty_as_a_sibling(): expected = Exact( ExpressionWrapper(F('int_field'), output_field=IntegerField()), Value(1)) query = Q(~Q(), Q(int_field=1)) expanded = expand_query(FakeModel, query) assert are_equal(expected, expanded) assert wrap(expanded).as_python(dict(int_field=1))
def test_combining_empty_with_query(): expected = Exact( ExpressionWrapper(F('int_field'), output_field=IntegerField()), Value(1)) query = Q() & Q(int_field=1) expanded = expand_query(FakeModel, query) assert are_equal(expected, expanded) assert wrap(expanded).as_python(dict(int_field=1))
def test_wrap_wraps(): ObjToRegister = type('ObjToRegister', (object,), {}) registry.register(ObjToRegister, FakeWrapper) wrapped = wrap.wrap(ObjToRegister) assert isinstance(wrapped, FakeWrapper) assert wrapped.expression is ObjToRegister registry.unregister(ObjToRegister)
def test_case(): expected = "Woot!" expression = Case( When(int_field__lt=20, then=Value("got 20!")), When(int_field=23, then=Value("Woot!")), ) wrapped = wrap(expression) instance = ControlFlowModel(int_field=23) assert expected == wrapped.as_python(instance)
def test_multiple_empty_children(): expected = EmptyQuery() query = Q(Q(), Q()) expanded = expand_query(FakeModel, query) assert are_equal(expected, expanded) assert wrap(expanded).as_python(None)
def test_negated_empty_query(): expected = EmptyQuery() query = ~Q() expanded = expand_query(FakeModel, query) assert are_equal(expected, expanded) assert wrap(expanded).as_python(None)
def test_wrap_ignores_python_supported(): obj_to_wrap = FakeSupportsPython() wrapped = wrap.wrap(obj_to_wrap) assert wrapped is obj_to_wrap
def get_wrapped(self): expression = self.get_expression() return wrap(expression)