diff options
| author | Clifford Gama <cliffygamy@gmail.com> | 2025-10-30 20:59:15 +0200 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-12-10 17:45:51 -0500 |
| commit | 66fed37ecb78daf0a50e95151a752b5760293514 (patch) | |
| tree | 5a83bb79028cdc23c390e4a1db38c684dd4ebdea /tests/model_fields | |
| parent | bbabbac936caf6db129427e6e65f03b6d0a68f62 (diff) | |
Fixed #36689 -- Fixed top-level JSONField __in lookup failures on MySQL and Oracle.
Added a JSONIn lookup to handle correct serialization and extraction
for JSONField top-level __in queries on backends without native JSON
support. KeyTransformIn now subclasses JSONIn.
Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com>
Thanks Jacob Walls for the report and review.
Diffstat (limited to 'tests/model_fields')
| -rw-r--r-- | tests/model_fields/test_jsonfield.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/model_fields/test_jsonfield.py b/tests/model_fields/test_jsonfield.py index cf8e1888e5..cd3cad734e 100644 --- a/tests/model_fields/test_jsonfield.py +++ b/tests/model_fields/test_jsonfield.py @@ -1010,6 +1010,19 @@ class TestQuerying(TestCase): NullableJSONModel.objects.filter(value__foo__iexact='"BaR"').exists(), False ) + def test_in(self): + tests = [ + ([[]], [self.objs[1]]), + ([{}], [self.objs[2]]), + ([{"a": "b", "c": 14}], [self.objs[3]]), + ([[1, [2]]], [self.objs[5]]), + ] + for lookup_value, expected in tests: + with self.subTest(value__in=lookup_value): + self.assertCountEqual( + NullableJSONModel.objects.filter(value__in=lookup_value), expected + ) + def test_key_in(self): tests = [ ("value__c__in", [14], self.objs[3:5]), @@ -1297,6 +1310,13 @@ class JSONNullTests(TestCase): NullableJSONModel.objects.filter(value__isnull=True), [sql_null] ) + def test_filter_in(self): + obj = NullableJSONModel.objects.create(value=JSONNull()) + self.assertSequenceEqual( + NullableJSONModel.objects.filter(value__in=[JSONNull()]), + [obj], + ) + def test_bulk_update(self): obj1 = NullableJSONModel.objects.create(value={"k": "1st"}) obj2 = NullableJSONModel.objects.create(value={"k": "2nd"}) |
