summaryrefslogtreecommitdiff
path: root/tests/migrations
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2023-11-22 10:01:23 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-11-22 12:29:14 +0100
commit828082dad954e87d09a99b53424e6faa1860ccc7 (patch)
tree0882a91131e9b53cf61774fd42a825b32d7dc937 /tests/migrations
parent0d407bcce5449d839fab138baeb9220f6df6bd6d (diff)
Fixed #34984 -- Skipped GeneratedFields when remaking tables on SQLite.
Regression in f333e3513e8bdf5ffeb6eeb63021c230082e6f95.t Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com> Co-authored-by: David Sanders <shang.xiao.sanders@gmail.com>
Diffstat (limited to 'tests/migrations')
-rw-r--r--tests/migrations/test_operations.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py
index 21e8ab069a..7643111c34 100644
--- a/tests/migrations/test_operations.py
+++ b/tests/migrations/test_operations.py
@@ -5801,6 +5801,42 @@ class OperationTests(OperationTestBase):
def test_remove_generated_field_virtual(self):
self._test_remove_generated_field(db_persist=False)
+ @skipUnlessDBFeature("supports_stored_generated_columns")
+ def test_add_field_after_generated_field(self):
+ app_label = "test_adfagf"
+ project_state = self.set_up_test_model(app_label)
+ operation_1 = migrations.AddField(
+ "Pony",
+ "generated",
+ models.GeneratedField(
+ expression=Value(1),
+ output_field=models.IntegerField(),
+ db_persist=True,
+ ),
+ )
+ operation_2 = migrations.AddField(
+ "Pony",
+ "static",
+ models.IntegerField(default=2),
+ )
+ new_state = project_state.clone()
+ operation_1.state_forwards(app_label, new_state)
+ with connection.schema_editor() as editor:
+ operation_1.database_forwards(app_label, editor, project_state, new_state)
+ project_state, new_state = new_state, new_state.clone()
+ pony_old = new_state.apps.get_model(app_label, "Pony").objects.create(weight=20)
+ self.assertEqual(pony_old.generated, 1)
+ operation_2.state_forwards(app_label, new_state)
+ with connection.schema_editor() as editor:
+ operation_2.database_forwards(app_label, editor, project_state, new_state)
+ Pony = new_state.apps.get_model(app_label, "Pony")
+ pony_old = Pony.objects.get(pk=pony_old.pk)
+ self.assertEqual(pony_old.generated, 1)
+ self.assertEqual(pony_old.static, 2)
+ pony_new = Pony.objects.create(weight=20)
+ self.assertEqual(pony_new.generated, 1)
+ self.assertEqual(pony_new.static, 2)
+
class SwappableOperationTests(OperationTestBase):
"""