summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2012-05-25 14:00:42 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2012-05-25 14:10:45 +0300
commit323b414441e13681c2a4117dc7043926f938f48a (patch)
tree6ab6e83a0cca20b7afb159a863ff7d9c6eaa2d48
parent2042f537a6d7d67bdf65ca322aad1c6124e07527 (diff)
Added tests for nested exclude/negate queries
-rw-r--r--tests/regressiontests/queries/tests.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/regressiontests/queries/tests.py b/tests/regressiontests/queries/tests.py
index 28aa63328e..1035a38840 100644
--- a/tests/regressiontests/queries/tests.py
+++ b/tests/regressiontests/queries/tests.py
@@ -844,6 +844,39 @@ class Queries1Tests(BaseQuerysetTest):
)
Tag._meta.ordering = original_ordering
+ def test_exclude(self):
+ self.assertQuerysetEqual(
+ Item.objects.exclude(tags__name='t4'),
+ [repr(i) for i in Item.objects.filter(~Q(tags__name='t4'))])
+ self.assertQuerysetEqual(
+ Item.objects.exclude(Q(tags__name='t4')|Q(tags__name='t3')),
+ [repr(i) for i in Item.objects.filter(~(Q(tags__name='t4')|Q(tags__name='t3')))])
+ self.assertQuerysetEqual(
+ Item.objects.exclude(Q(tags__name='t4')|~Q(tags__name='t3')),
+ [repr(i) for i in Item.objects.filter(~(Q(tags__name='t4')|~Q(tags__name='t3')))])
+
+ def test_nested_exclude(self):
+ self.assertQuerysetEqual(
+ Item.objects.exclude(~Q(tags__name='t4')),
+ [repr(i) for i in Item.objects.filter(~~Q(tags__name='t4'))])
+
+ def test_double_exclude(self):
+ self.assertQuerysetEqual(
+ Item.objects.filter(Q(tags__name='t4')),
+ [repr(i) for i in Item.objects.filter(~~Q(tags__name='t4'))])
+ self.assertQuerysetEqual(
+ Item.objects.filter(Q(tags__name='t4')),
+ [repr(i) for i in Item.objects.filter(~Q(~Q(tags__name='t4')))])
+
+ @unittest.expectedFailure
+ def test_exclude_in(self):
+ self.assertQuerysetEqual(
+ Item.objects.exclude(Q(tags__name__in=['t4', 't3'])),
+ [repr(i) for i in Item.objects.filter(~Q(tags__name__in=['t4', 't3']))])
+ self.assertQuerysetEqual(
+ Item.objects.filter(Q(tags__name__in=['t4', 't3'])),
+ [repr(i) for i in Item.objects.filter(~~Q(tags__name__in=['t4', 't3']))])
+
class Queries2Tests(TestCase):
def setUp(self):
Number.objects.create(num=4)