diff options
author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-10-14 11:09:49 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-10-14 20:56:04 +0200 |
commit | bbd55e58639c33b4c5adff5f41b78deffc915c11 (patch) | |
tree | 897a15e97cb37f845cc72f5a7e95393f03318456 /tests/model_fields | |
parent | 7e1e198494d4fc72cf6e153f9d24fe2493c17dc1 (diff) | |
download | django-bbd55e58639c33b4c5adff5f41b78deffc915c11.tar.gz |
Refs #32096 -- Fixed ExpressionWrapper crash with JSONField key transforms.
Regression in 6789ded0a6ab797f0dcdfa6ad5d1cfa46e23abcd.
Thanks Simon Charette and Igor Jerosimić for the report.
Diffstat (limited to 'tests/model_fields')
-rw-r--r-- | tests/model_fields/test_jsonfield.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/tests/model_fields/test_jsonfield.py b/tests/model_fields/test_jsonfield.py index a590ac1221..f45589e075 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, @@ -405,6 +408,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'), |