summaryrefslogtreecommitdiff
path: root/tests/schema
diff options
context:
space:
mode:
authorIan Foote <python@ian.feete.org>2020-11-22 22:27:57 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-05-12 19:11:40 +0200
commit7414704e88d73dafbcfbb85f9bc54cb6111439d3 (patch)
treef51136b16e457d7f46e01ff3cc06308faf0923db /tests/schema
parent599f3e2cda50ab084915ffd08edb5ad6cad61415 (diff)
Fixed #470 -- Added support for database defaults on fields.
Special thanks to Hannes Ljungberg for finding multiple implementation gaps. Thanks also to Simon Charette, Adam Johnson, and Mariusz Felisiak for reviews.
Diffstat (limited to 'tests/schema')
-rw-r--r--tests/schema/tests.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index d81a01b41d..688a9f1fcf 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -2102,6 +2102,33 @@ class SchemaTests(TransactionTestCase):
with self.assertRaises(IntegrityError):
NoteRename.objects.create(detail_info=None)
+ @isolate_apps("schema")
+ def test_rename_keep_db_default(self):
+ """Renaming a field shouldn't affect a database default."""
+
+ class AuthorDbDefault(Model):
+ birth_year = IntegerField(db_default=1985)
+
+ class Meta:
+ app_label = "schema"
+
+ self.isolated_local_models = [AuthorDbDefault]
+ with connection.schema_editor() as editor:
+ editor.create_model(AuthorDbDefault)
+ columns = self.column_classes(AuthorDbDefault)
+ self.assertEqual(columns["birth_year"][1].default, "1985")
+
+ old_field = AuthorDbDefault._meta.get_field("birth_year")
+ new_field = IntegerField(db_default=1985)
+ new_field.set_attributes_from_name("renamed_year")
+ new_field.model = AuthorDbDefault
+ with connection.schema_editor(
+ atomic=connection.features.supports_atomic_references_rename
+ ) as editor:
+ editor.alter_field(AuthorDbDefault, old_field, new_field, strict=True)
+ columns = self.column_classes(AuthorDbDefault)
+ self.assertEqual(columns["renamed_year"][1].default, "1985")
+
@skipUnlessDBFeature(
"supports_column_check_constraints", "can_introspect_check_constraints"
)