summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaolo Melchiorre <paolo@melchiorre.org>2023-09-22 11:27:40 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-09-22 21:37:01 +0200
commit81663cc4ca8f7ac0eac33cbb6986462330e75bb1 (patch)
tree269c3cf297b48edb7a11ed2e3f051f7799ebcca0 /tests
parent7683c8635119b55eb04b18ab14b810582a4e8972 (diff)
[5.0.x] Fixed #34861 -- Fixed crash when adding GeneratedField with some expressions.
Co-authored-by: Simon Charette <charette.s@gmail.com> Backport of 574ee4023e15cfb195833edfbaed353f8021c62f from main
Diffstat (limited to 'tests')
-rw-r--r--tests/schema/tests.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index 9f620331bc..cc92e250a1 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -32,6 +32,7 @@ from django.db.models import (
FloatField,
ForeignKey,
ForeignObject,
+ GeneratedField,
Index,
IntegerField,
JSONField,
@@ -50,7 +51,7 @@ from django.db.models import (
UUIDField,
Value,
)
-from django.db.models.fields.json import KeyTextTransform
+from django.db.models.fields.json import KT, KeyTextTransform
from django.db.models.functions import Abs, Cast, Collate, Lower, Random, Upper
from django.db.models.indexes import IndexExpression
from django.db.transaction import TransactionManagementError, atomic
@@ -817,6 +818,24 @@ class SchemaTests(TransactionTestCase):
self.assertEqual(columns["bits"][0], "TextField")
@isolate_apps("schema")
+ @skipUnlessDBFeature("supports_json_field", "supports_stored_generated_columns")
+ def test_add_generated_field_with_kt_model(self):
+ class GeneratedFieldKTModel(Model):
+ data = JSONField()
+ status = GeneratedField(expression=KT("data__status"), db_persist=True)
+
+ class Meta:
+ app_label = "schema"
+
+ with CaptureQueriesContext(connection) as ctx:
+ with connection.schema_editor() as editor:
+ editor.create_model(GeneratedFieldKTModel)
+ self.assertIs(
+ any("None" in query["sql"] for query in ctx.captured_queries),
+ False,
+ )
+
+ @isolate_apps("schema")
def test_add_auto_field(self):
class AddAutoFieldModel(Model):
name = CharField(max_length=255, primary_key=True)