Example #1
0
    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])
Example #2
0
    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"]),
                )
Example #3
0
 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])