summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2023-11-07 05:32:34 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-11-07 13:33:24 +0300
commit0265eaa500aa01e5328989b5cd814db7234f3777 (patch)
treeea31869552e640644787f8bd844aa3ecee686304 /tests
parent1383dc75eb8171c43ef6a19cac3b9f57f549ccc4 (diff)
[5.0.x] Fixed #34946 -- Preserved db_default on combined default field addition.
Regression in 7414704e88d73dafbcfbb85f9bc54cb6111439d3. Backport of 8a28e983df091d94eaba77cb82fbe3ef60a80799 from main
Diffstat (limited to 'tests')
-rw-r--r--tests/migrations/test_operations.py13
-rw-r--r--tests/schema/tests.py17
2 files changed, 27 insertions, 3 deletions
diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py
index 01197d5fc8..71d45b8601 100644
--- a/tests/migrations/test_operations.py
+++ b/tests/migrations/test_operations.py
@@ -1693,15 +1693,22 @@ class OperationTests(OperationTestBase):
field = new_state.models[app_label, "pony"].fields["height"]
self.assertEqual(field.default, 3)
self.assertEqual(field.db_default, Value(4))
- project_state.apps.get_model(app_label, "pony").objects.create(weight=4)
+ pre_pony_pk = (
+ project_state.apps.get_model(app_label, "pony").objects.create(weight=4).pk
+ )
self.assertColumnNotExists(table_name, "height")
# Add field.
with connection.schema_editor() as editor:
operation.database_forwards(app_label, editor, project_state, new_state)
self.assertColumnExists(table_name, "height")
+ post_pony_pk = (
+ project_state.apps.get_model(app_label, "pony").objects.create(weight=10).pk
+ )
new_model = new_state.apps.get_model(app_label, "pony")
- old_pony = new_model.objects.get()
- self.assertEqual(old_pony.height, 4)
+ pre_pony = new_model.objects.get(pk=pre_pony_pk)
+ self.assertEqual(pre_pony.height, 4)
+ post_pony = new_model.objects.get(pk=post_pony_pk)
+ self.assertEqual(post_pony.height, 4)
new_pony = new_model.objects.create(weight=5)
if not connection.features.can_return_columns_from_insert:
new_pony.refresh_from_db()
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index 87cabe4cad..e1e3c7d3c6 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -2263,6 +2263,23 @@ class SchemaTests(TransactionTestCase):
columns = self.column_classes(AuthorDbDefault)
self.assertEqual(columns["renamed_year"][1].default, "1985")
+ @isolate_apps("schema")
+ def test_add_field_both_defaults_preserves_db_default(self):
+ class Author(Model):
+ class Meta:
+ app_label = "schema"
+
+ with connection.schema_editor() as editor:
+ editor.create_model(Author)
+
+ field = IntegerField(default=1985, db_default=1988)
+ field.set_attributes_from_name("birth_year")
+ field.model = Author
+ with connection.schema_editor() as editor:
+ editor.add_field(Author, field)
+ columns = self.column_classes(Author)
+ self.assertEqual(columns["birth_year"][1].default, "1988")
+
@skipUnlessDBFeature(
"supports_column_check_constraints", "can_introspect_check_constraints"
)