diff options
author | Allen Jonathan David <allenajdjonathan@gmail.com> | 2022-08-30 22:56:18 +0530 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-09-16 05:36:57 +0200 |
commit | 10178197d57476f69688d4535e550a1ea3a5eac5 (patch) | |
tree | 28a39467978f63adc1b2f7cc9ede69cd73a0c29f /tests/model_fields | |
parent | 3ba7f2e9069c54db6d6d9d2fd1945b2dbc935d9c (diff) | |
download | django-10178197d57476f69688d4535e550a1ea3a5eac5.tar.gz |
Fixed #33966 -- Added support for using KeyTextTransform from lookup.
Diffstat (limited to 'tests/model_fields')
-rw-r--r-- | tests/model_fields/test_jsonfield.py | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/tests/model_fields/test_jsonfield.py b/tests/model_fields/test_jsonfield.py index d6b9f031b1..2c32d8a4ea 100644 --- a/tests/model_fields/test_jsonfield.py +++ b/tests/model_fields/test_jsonfield.py @@ -27,6 +27,7 @@ from django.db.models import ( ) from django.db.models.expressions import RawSQL from django.db.models.fields.json import ( + KT, KeyTextTransform, KeyTransform, KeyTransformFactory, @@ -374,11 +375,7 @@ class TestQuerying(TestCase): qs = NullableJSONModel.objects.filter(value__isnull=False) self.assertQuerysetEqual( qs.filter(value__isnull=False) - .annotate( - key=KeyTextTransform( - "f", KeyTransform("1", KeyTransform("d", "value")) - ), - ) + .annotate(key=KT("value__d__1__f")) .values("key") .annotate(count=Count("key")) .order_by("count"), @@ -1078,3 +1075,20 @@ class TestQuerying(TestCase): ).filter(chain=F("related_key__0")), [related_obj], ) + + def test_key_text_transform_from_lookup(self): + qs = NullableJSONModel.objects.annotate(b=KT("value__bax__foo")).filter( + b__contains="ar", + ) + self.assertSequenceEqual(qs, [self.objs[7]]) + qs = NullableJSONModel.objects.annotate(c=KT("value__o")).filter( + c__contains="uot", + ) + self.assertSequenceEqual(qs, [self.objs[4]]) + + def test_key_text_transform_from_lookup_invalid(self): + msg = "Lookup must contain key or index transforms." + with self.assertRaisesMessage(ValueError, msg): + KT("value") + with self.assertRaisesMessage(ValueError, msg): + KT("") |