summaryrefslogtreecommitdiff
path: root/tests/aggregation
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2025-05-21 15:16:12 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-05-23 15:17:20 +0200
commitb8e5a8a9a2a767f584cbe89a878a42363706f939 (patch)
tree3e6b88266fe8abddfe29a449748b5a3ec864d501 /tests/aggregation
parentd2732c30af28381f5a2ff1b08f754eeb7a6dfeca (diff)
Fixed #36404 -- Fixed Aggregate.filter using OuterRef.
Regression in a76035e925ff4e6d8676c65cb135c74b993b1039. Thank you to Simon Charette for the review. co-authored-by: Simon Charette <charette.s@gmail.com>
Diffstat (limited to 'tests/aggregation')
-rw-r--r--tests/aggregation/test_filter_argument.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/aggregation/test_filter_argument.py b/tests/aggregation/test_filter_argument.py
index 75835edb0b..1a17703a86 100644
--- a/tests/aggregation/test_filter_argument.py
+++ b/tests/aggregation/test_filter_argument.py
@@ -84,6 +84,10 @@ class FilteredAggregateTests(TestCase):
Author.objects.aggregate(age=agg)["age"], expected_result
)
+ def test_empty_filtered_aggregates(self):
+ agg = Count("pk", filter=Q())
+ self.assertEqual(Author.objects.aggregate(count=agg)["count"], 3)
+
def test_double_filtered_aggregates(self):
agg = Sum("age", filter=Q(Q(name="test2") & ~Q(name="test")))
self.assertEqual(Author.objects.aggregate(age=agg)["age"], 60)
@@ -182,6 +186,23 @@ class FilteredAggregateTests(TestCase):
)
self.assertEqual(aggregate, {"max_rating": 4.5})
+ def test_filtered_aggregrate_ref_in_subquery_annotation(self):
+ aggs = (
+ Author.objects.annotate(
+ count=Subquery(
+ Book.objects.annotate(
+ weird_count=Count(
+ "pk",
+ filter=Q(pages=OuterRef("age")),
+ )
+ ).values("weird_count")[:1]
+ ),
+ )
+ .order_by("pk")
+ .aggregate(sum=Sum("count"))
+ )
+ self.assertEqual(aggs["sum"], 0)
+
def test_filtered_aggregate_on_exists(self):
aggregate = Book.objects.values("publisher").aggregate(
max_rating=Max(