diff options
| author | Simon Charette <charette.s@gmail.com> | 2023-11-07 05:32:34 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-07 13:32:34 +0300 |
| commit | 8a28e983df091d94eaba77cb82fbe3ef60a80799 (patch) | |
| tree | 9b5f19489847af88fafbc1af4348024ed2b00338 /tests | |
| parent | 656192c2c96bb955a399d92f381e38fe2254fe17 (diff) | |
Fixed #34946 -- Preserved db_default on combined default field addition.
Regression in 7414704e88d73dafbcfbb85f9bc54cb6111439d3.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/migrations/test_operations.py | 13 | ||||
| -rw-r--r-- | tests/schema/tests.py | 17 |
2 files changed, 27 insertions, 3 deletions
diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py index d58da8b7ac..57a9086c19 100644 --- a/tests/migrations/test_operations.py +++ b/tests/migrations/test_operations.py @@ -1692,15 +1692,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 20a00e29f7..72f90c934b 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -2257,6 +2257,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" ) |
