summaryrefslogtreecommitdiff
path: root/tests/model_fields
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2020-10-14 11:09:49 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-10-14 21:03:40 +0200
commitae6b24093c7ccc730850d11bbe93e1481ebd2912 (patch)
tree1826fe281a46f88aa5aa9c20f3cc44419cf18a2f /tests/model_fields
parent59fe0b85414f5030499075d95cad3cd73789cfe8 (diff)
[3.1.x] Refs #32096 -- Fixed ExpressionWrapper crash with JSONField key transforms.
Regression in 6789ded0a6ab797f0dcdfa6ad5d1cfa46e23abcd. Thanks Simon Charette and Igor Jerosimić for the report. Backport of bbd55e58639c33b4c5adff5f41b78deffc915c11 from master
Diffstat (limited to 'tests/model_fields')
-rw-r--r--tests/model_fields/test_jsonfield.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/tests/model_fields/test_jsonfield.py b/tests/model_fields/test_jsonfield.py
index 381636bb2d..ea9bc2775b 100644
--- a/tests/model_fields/test_jsonfield.py
+++ b/tests/model_fields/test_jsonfield.py
@@ -10,7 +10,10 @@ from django.db import (
DataError, IntegrityError, NotSupportedError, OperationalError, connection,
models,
)
-from django.db.models import Count, F, OuterRef, Q, Subquery, Transform, Value
+from django.db.models import (
+ Count, ExpressionWrapper, F, IntegerField, OuterRef, Q, Subquery,
+ Transform, Value,
+)
from django.db.models.expressions import RawSQL
from django.db.models.fields.json import (
KeyTextTransform, KeyTransform, KeyTransformFactory,
@@ -382,6 +385,17 @@ class TestQuerying(TestCase):
[self.objs[4]],
)
+ def test_expression_wrapper_key_transform(self):
+ self.assertSequenceEqual(
+ NullableJSONModel.objects.annotate(
+ expr=ExpressionWrapper(
+ KeyTransform('c', 'value'),
+ output_field=IntegerField(),
+ ),
+ ).filter(expr__isnull=False),
+ self.objs[3:5],
+ )
+
def test_has_key(self):
self.assertSequenceEqual(
NullableJSONModel.objects.filter(value__has_key='a'),