diff options
author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-06-13 08:16:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-13 08:16:16 +0200 |
commit | 82175ead723f8fa3f9271fbd4b24275097029aab (patch) | |
tree | 25bd89dba8e2c53929b03fd6d6475da614be093f /tests/queries/test_qs_combinators.py | |
parent | 9dc83c356d363c090f3351c908cad6f823aeb7bf (diff) | |
download | django-82175ead723f8fa3f9271fbd4b24275097029aab.tar.gz |
Fixed #28293 -- Fixed union(), intersection(), and difference() when combining with an EmptyQuerySet.
Thanks Jon Dufresne for the report and Tim Graham for the review.
Diffstat (limited to 'tests/queries/test_qs_combinators.py')
-rw-r--r-- | tests/queries/test_qs_combinators.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py index 120f9b8a9f..e1ff860bf0 100644 --- a/tests/queries/test_qs_combinators.py +++ b/tests/queries/test_qs_combinators.py @@ -42,6 +42,31 @@ class QuerySetSetOperationTests(TestCase): self.assertEqual(len(list(qs1.union(qs2, all=True))), 20) self.assertEqual(len(list(qs1.union(qs2))), 10) + @skipUnlessDBFeature('supports_select_intersection') + def test_intersection_with_empty_qs(self): + qs1 = Number.objects.all() + qs2 = Number.objects.none() + self.assertEqual(len(qs1.intersection(qs2)), 0) + self.assertEqual(len(qs2.intersection(qs1)), 0) + self.assertEqual(len(qs2.intersection(qs2)), 0) + + @skipUnlessDBFeature('supports_select_difference') + def test_difference_with_empty_qs(self): + qs1 = Number.objects.all() + qs2 = Number.objects.none() + self.assertEqual(len(qs1.difference(qs2)), 10) + self.assertEqual(len(qs2.difference(qs1)), 0) + self.assertEqual(len(qs2.difference(qs2)), 0) + + def test_union_with_empty_qs(self): + qs1 = Number.objects.all() + qs2 = Number.objects.none() + self.assertEqual(len(qs1.union(qs2)), 10) + self.assertEqual(len(qs2.union(qs1)), 10) + self.assertEqual(len(qs2.union(qs1, qs1, qs1)), 10) + self.assertEqual(len(qs2.union(qs1, qs1, all=True)), 20) + self.assertEqual(len(qs2.union(qs2)), 0) + def test_limits(self): qs1 = Number.objects.all() qs2 = Number.objects.all() |