def test_query_literals(self): query = FilterQuerySet("Q(headline__startswith='{headline}')&Q(id__in={idlist})", "stored.tmodel") self.assertRaises(KeyError, lambda: query.objects.all()) query.literals(headline='"head"') self.assertRaises(KeyError, lambda: query.objects.all()) query.literals(idlist="[1,2]") self.assert_(flatten(query.objects.all().values_list("id")) == [1, 2])
def test_queries(self): for params in self.queries: query = FilterQuerySet(params["query"], params["selector"], **params.get("literals", {})) evals = dict((k, v()) for (k, v) in params.get("eval", {}).items()) evaluated_query = query(**evals) result = evaluated_query.values_list("id") restored_query = loads(dumps(query)) restored_result = restored_query(**evals).values_list("id") if params.get("override_literals", {}): override_result = query.literals(**params["override_literals"])(**evals).values_list("id") restored_override_result = restored_query.literals(**params["override_literals"])(**evals).values_list( "id" ) # self.assert_(query.literals(**params['override_literals']) is not query) self.assert_( flatten(result) == params["result"], "1:%s:%s!=%s" % (params["query"], flatten(result), params["result"]), ) self.assert_( flatten(restored_result) == params["result"], "2:%s:%s!=%s" % (params["query"], flatten(restored_result), params["result"]), ) self.assert_( flatten(restored_result) == params["result"], "3:%s:%s!=%s" % (params["query"], flatten(restored_result), params["result"]), ) if params.get("override_literals", {}): self.assert_( flatten(override_result) == params["override_result"], "4:%s:%s!=%s" % (params["query"], flatten(override_result), params["override_result"]), ) self.assert_( flatten(restored_override_result) == params["override_result"], "5:%s:%s!=%s" % (params["query"], flatten(restored_override_result), params["override_result"]), )
def test_query_evals_with_literals3(self): query = FilterQuerySet("Q(headline__startswith=headline)&Q(id__in={idlist})", "stored.tmodel") query(headline="head").literals(idlist="[1,2]") query.literals(idlist="[3,4]") self.assert_(flatten(query.objects.all().values_list("id")) == [3, 4])