diff options
Diffstat (limited to 'tests/postgres_tests/test_array.py')
| -rw-r--r-- | tests/postgres_tests/test_array.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index 392b8f946c..e65009ad83 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -10,6 +10,7 @@ from django.core import checks, exceptions, serializers, validators from django.core.exceptions import FieldError from django.core.management import call_command from django.db import IntegrityError, connection, models +from django.db.models import JSONNull from django.db.models.expressions import Exists, F, OuterRef, RawSQL, Value from django.db.models.functions import Cast, JSONObject, Upper from django.test import TransactionTestCase, override_settings, skipUnlessDBFeature @@ -1577,3 +1578,29 @@ class TestAdminUtils(PostgreSQLTestCase): self.empty_value, ) self.assertEqual(display_value, self.empty_value) + + +class TestJSONFieldQuerying(PostgreSQLTestCase): + def test_saving_and_querying_for_sql_null(self): + obj = OtherTypesArrayModel.objects.create(json=[None, None]) + self.assertSequenceEqual( + OtherTypesArrayModel.objects.filter(json__1__isnull=True), [obj] + ) + + def test_saving_and_querying_for_json_null(self): + obj = OtherTypesArrayModel.objects.create(json=[JSONNull(), JSONNull()]) + self.assertSequenceEqual( + OtherTypesArrayModel.objects.filter(json__1=JSONNull()), [obj] + ) + self.assertSequenceEqual( + OtherTypesArrayModel.objects.filter(json__1__isnull=True), [] + ) + + def test_saving_and_querying_for_nested_json_nulls(self): + obj = OtherTypesArrayModel.objects.create(json=[[None, 1], [None, 2]]) + self.assertSequenceEqual( + OtherTypesArrayModel.objects.filter(json__1__0=None), [obj] + ) + self.assertSequenceEqual( + OtherTypesArrayModel.objects.filter(json__1__0__isnull=True), [] + ) |
