summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/queries/tests.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/queries/tests.py b/tests/queries/tests.py
index 48d610bb2b..7ac8a65d42 100644
--- a/tests/queries/tests.py
+++ b/tests/queries/tests.py
@@ -1357,6 +1357,24 @@ class Queries1Tests(TestCase):
)
self.assertSequenceEqual(Note.objects.exclude(negate=True), [self.n3])
+ def test_combining_does_not_mutate(self):
+ all_authors = Author.objects.all()
+ authors_with_report = Author.objects.filter(
+ Exists(Report.objects.filter(creator__pk=OuterRef("id")))
+ )
+ authors_without_report = all_authors.exclude(pk__in=authors_with_report)
+ items_before = Item.objects.filter(creator__in=authors_without_report)
+ self.assertCountEqual(items_before, [self.i2, self.i3, self.i4])
+ # Combining querysets doesn't mutate them.
+ all_authors | authors_with_report
+ all_authors & authors_with_report
+
+ authors_without_report = all_authors.exclude(pk__in=authors_with_report)
+ items_after = Item.objects.filter(creator__in=authors_without_report)
+
+ self.assertCountEqual(items_after, [self.i2, self.i3, self.i4])
+ self.assertCountEqual(items_before, items_after)
+
class Queries2Tests(TestCase):
@classmethod