summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2023-11-07 21:47:37 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-11-08 16:18:00 +0300
commit73869a51632b9f826d4d7b9e888f81d60b16e8b6 (patch)
tree4ed54c1f77e46b67ab76df66fe2204f2e49daa8b /tests
parent0265eaa500aa01e5328989b5cd814db7234f3777 (diff)
[5.0.x] Refs #30446, Refs #34944 -- Fixed crash when adding GeneratedField with string Value().
This should allow smarter output_field inferring in functions dealing with text expressions. Regression in f333e3513e8bdf5ffeb6eeb63021c230082e6f95. Backport of 8b1acc0440418ac8f45ba48e2dfcf5126c83341b from main
Diffstat (limited to 'tests')
-rw-r--r--tests/expressions/tests.py1
-rw-r--r--tests/schema/tests.py17
2 files changed, 18 insertions, 0 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py
index 073e2e9258..9743d024b1 100644
--- a/tests/expressions/tests.py
+++ b/tests/expressions/tests.py
@@ -2227,6 +2227,7 @@ class ValueTests(TestCase):
with self.subTest(type=type(value)):
expr = Value(value)
self.assertIsInstance(expr.output_field, output_field_type)
+ self.assertEqual(Value("foo").output_field.max_length, 3)
def test_resolve_output_field_failure(self):
msg = "Cannot resolve expression type, unknown output_field"
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index e1e3c7d3c6..5488013bfc 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -850,6 +850,23 @@ class SchemaTests(TransactionTestCase):
@isolate_apps("schema")
@skipUnlessDBFeature("supports_stored_generated_columns")
+ def test_add_generated_field_with_string_value(self):
+ class GeneratedFieldStringValueModel(Model):
+ value = GeneratedField(expression=Value("static string"), db_persist=True)
+
+ class Meta:
+ app_label = "schema"
+
+ with CaptureQueriesContext(connection) as ctx:
+ with connection.schema_editor() as editor:
+ editor.create_model(GeneratedFieldStringValueModel)
+ self.assertIs(
+ any("None" in query["sql"] for query in ctx.captured_queries),
+ False,
+ )
+
+ @isolate_apps("schema")
+ @skipUnlessDBFeature("supports_stored_generated_columns")
def test_add_generated_field_with_output_field(self):
class GeneratedFieldOutputFieldModel(Model):
price = DecimalField(max_digits=7, decimal_places=2)