diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-06-13 08:16:16 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2017-06-13 08:33:26 +0200 |
| commit | 44e29ea1e906859e85bb2a46ae5ea9d82bd96f5f (patch) | |
| tree | bc22ec611fad767850afc27d4dc8c6f7874d891e /tests | |
| parent | 927d9b51fee2442280ae975b21b98b5a705c4b17 (diff) | |
[1.11.x] Fixed #28293 -- Fixed union(), intersection(), and difference() when combining with an EmptyQuerySet.
Thanks Jon Dufresne for the report and Tim Graham for the review.
Backport of 82175ead723f8fa3f9271fbd4b24275097029aab from master
Diffstat (limited to 'tests')
| -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 a0faab2eb7..ec341952ea 100644 --- a/tests/queries/test_qs_combinators.py +++ b/tests/queries/test_qs_combinators.py @@ -45,6 +45,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_union_bad_kwarg(self): qs1 = Number.objects.all() msg = "union() received an unexpected keyword argument 'bad'" |
