summaryrefslogtreecommitdiff
path: root/tests/model_fields
diff options
context:
space:
mode:
Diffstat (limited to 'tests/model_fields')
-rw-r--r--tests/model_fields/models.py1
-rw-r--r--tests/model_fields/test_jsonfield.py16
2 files changed, 16 insertions, 1 deletions
diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py
index a594b89adb..c1e356bb53 100644
--- a/tests/model_fields/models.py
+++ b/tests/model_fields/models.py
@@ -452,6 +452,7 @@ class JSONNullDefaultModel(models.Model):
class RelatedJSONModel(models.Model):
value = models.JSONField()
json_model = models.ForeignKey(NullableJSONModel, models.CASCADE)
+ summary = models.CharField(max_length=100, null=True, blank=True)
class Meta:
required_db_features = {"supports_json_field"}
diff --git a/tests/model_fields/test_jsonfield.py b/tests/model_fields/test_jsonfield.py
index 1afeef31eb..7b07a48a1e 100644
--- a/tests/model_fields/test_jsonfield.py
+++ b/tests/model_fields/test_jsonfield.py
@@ -40,7 +40,7 @@ from django.db.models.fields.json import (
KeyTransformFactory,
KeyTransformTextLookupMixin,
)
-from django.db.models.functions import Cast
+from django.db.models.functions import Cast, Coalesce
from django.test import (
SimpleTestCase,
TestCase,
@@ -1290,6 +1290,20 @@ class TestQuerying(TestCase):
)
self.assertQuerySetEqual(qs, all_objects)
+ @skipUnlessDBFeature("supports_primitives_in_json_field")
+ def test_json_type_casting_with_coalesce(self):
+ RelatedJSONModel.objects.create(
+ summary='"This is valid JSON primitive."',
+ value={"text": "test"},
+ json_model=self.objs[4],
+ )
+ result = RelatedJSONModel.objects.annotate(
+ coalesced_value=Coalesce(
+ Cast("summary", JSONField()), "value", output_field=JSONField()
+ )
+ ).first()
+ self.assertEqual(result.coalesced_value, "This is valid JSON primitive.")
+
@skipUnlessDBFeature("supports_primitives_in_json_field")
class JSONNullTests(TestCase):