Refs #27236 -- Split RenameField() tests with unique/index_together.
This commit is contained in:
parent
282d58e193
commit
4f284115a9
|
@ -2489,10 +2489,7 @@ class OperationTests(OperationTestBase):
|
|||
"""
|
||||
Tests the RenameField operation.
|
||||
"""
|
||||
project_state = self.set_up_test_model(
|
||||
"test_rnfl", unique_together=True, index_together=True
|
||||
)
|
||||
# Test the state alteration
|
||||
project_state = self.set_up_test_model("test_rnfl")
|
||||
operation = migrations.RenameField("Pony", "pink", "blue")
|
||||
self.assertEqual(operation.describe(), "Rename field pink on Pony to blue")
|
||||
self.assertEqual(operation.migration_name_fragment, "rename_pink_pony_blue")
|
||||
|
@ -2500,46 +2497,19 @@ class OperationTests(OperationTestBase):
|
|||
operation.state_forwards("test_rnfl", new_state)
|
||||
self.assertIn("blue", new_state.models["test_rnfl", "pony"].fields)
|
||||
self.assertNotIn("pink", new_state.models["test_rnfl", "pony"].fields)
|
||||
# Make sure the unique_together has the renamed column too
|
||||
self.assertIn(
|
||||
"blue", new_state.models["test_rnfl", "pony"].options["unique_together"][0]
|
||||
)
|
||||
self.assertNotIn(
|
||||
"pink", new_state.models["test_rnfl", "pony"].options["unique_together"][0]
|
||||
)
|
||||
# Make sure the index_together has the renamed column too
|
||||
self.assertIn(
|
||||
"blue", new_state.models["test_rnfl", "pony"].options["index_together"][0]
|
||||
)
|
||||
self.assertNotIn(
|
||||
"pink", new_state.models["test_rnfl", "pony"].options["index_together"][0]
|
||||
)
|
||||
# Test the database alteration
|
||||
# Rename field.
|
||||
self.assertColumnExists("test_rnfl_pony", "pink")
|
||||
self.assertColumnNotExists("test_rnfl_pony", "blue")
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_forwards("test_rnfl", editor, project_state, new_state)
|
||||
self.assertColumnExists("test_rnfl_pony", "blue")
|
||||
self.assertColumnNotExists("test_rnfl_pony", "pink")
|
||||
# Ensure the unique constraint has been ported over
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute("INSERT INTO test_rnfl_pony (blue, weight) VALUES (1, 1)")
|
||||
with self.assertRaises(IntegrityError):
|
||||
with atomic():
|
||||
cursor.execute(
|
||||
"INSERT INTO test_rnfl_pony (blue, weight) VALUES (1, 1)"
|
||||
)
|
||||
cursor.execute("DELETE FROM test_rnfl_pony")
|
||||
# Ensure the index constraint has been ported over
|
||||
self.assertIndexExists("test_rnfl_pony", ["weight", "blue"])
|
||||
# And test reversal
|
||||
# Reversal.
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_backwards("test_rnfl", editor, new_state, project_state)
|
||||
self.assertColumnExists("test_rnfl_pony", "pink")
|
||||
self.assertColumnNotExists("test_rnfl_pony", "blue")
|
||||
# Ensure the index constraint has been reset
|
||||
self.assertIndexExists("test_rnfl_pony", ["weight", "pink"])
|
||||
# And deconstruction
|
||||
# Deconstruction.
|
||||
definition = operation.deconstruct()
|
||||
self.assertEqual(definition[0], "RenameField")
|
||||
self.assertEqual(definition[1], [])
|
||||
|
@ -2548,6 +2518,74 @@ class OperationTests(OperationTestBase):
|
|||
{"model_name": "Pony", "old_name": "pink", "new_name": "blue"},
|
||||
)
|
||||
|
||||
def test_rename_field_unique_together(self):
|
||||
project_state = self.set_up_test_model("test_rnflut", unique_together=True)
|
||||
operation = migrations.RenameField("Pony", "pink", "blue")
|
||||
new_state = project_state.clone()
|
||||
operation.state_forwards("test_rnflut", new_state)
|
||||
# unique_together has the renamed column.
|
||||
self.assertIn(
|
||||
"blue",
|
||||
new_state.models["test_rnflut", "pony"].options["unique_together"][0],
|
||||
)
|
||||
self.assertNotIn(
|
||||
"pink",
|
||||
new_state.models["test_rnflut", "pony"].options["unique_together"][0],
|
||||
)
|
||||
# Rename field.
|
||||
self.assertColumnExists("test_rnflut_pony", "pink")
|
||||
self.assertColumnNotExists("test_rnflut_pony", "blue")
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_forwards("test_rnflut", editor, project_state, new_state)
|
||||
self.assertColumnExists("test_rnflut_pony", "blue")
|
||||
self.assertColumnNotExists("test_rnflut_pony", "pink")
|
||||
# The unique constraint has been ported over.
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute("INSERT INTO test_rnflut_pony (blue, weight) VALUES (1, 1)")
|
||||
with self.assertRaises(IntegrityError):
|
||||
with atomic():
|
||||
cursor.execute(
|
||||
"INSERT INTO test_rnflut_pony (blue, weight) VALUES (1, 1)"
|
||||
)
|
||||
cursor.execute("DELETE FROM test_rnflut_pony")
|
||||
# Reversal.
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_backwards(
|
||||
"test_rnflut", editor, new_state, project_state
|
||||
)
|
||||
self.assertColumnExists("test_rnflut_pony", "pink")
|
||||
self.assertColumnNotExists("test_rnflut_pony", "blue")
|
||||
|
||||
def test_rename_field_index_together(self):
|
||||
project_state = self.set_up_test_model("test_rnflit", index_together=True)
|
||||
operation = migrations.RenameField("Pony", "pink", "blue")
|
||||
new_state = project_state.clone()
|
||||
operation.state_forwards("test_rnflit", new_state)
|
||||
self.assertIn("blue", new_state.models["test_rnflit", "pony"].fields)
|
||||
self.assertNotIn("pink", new_state.models["test_rnflit", "pony"].fields)
|
||||
# index_together has the renamed column.
|
||||
self.assertIn(
|
||||
"blue", new_state.models["test_rnflit", "pony"].options["index_together"][0]
|
||||
)
|
||||
self.assertNotIn(
|
||||
"pink", new_state.models["test_rnflit", "pony"].options["index_together"][0]
|
||||
)
|
||||
# Rename field.
|
||||
self.assertColumnExists("test_rnflit_pony", "pink")
|
||||
self.assertColumnNotExists("test_rnflit_pony", "blue")
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_forwards("test_rnflit", editor, project_state, new_state)
|
||||
self.assertColumnExists("test_rnflit_pony", "blue")
|
||||
self.assertColumnNotExists("test_rnflit_pony", "pink")
|
||||
# The index constraint has been ported over.
|
||||
self.assertIndexExists("test_rnflit_pony", ["weight", "blue"])
|
||||
# Reversal.
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_backwards(
|
||||
"test_rnflit", editor, new_state, project_state
|
||||
)
|
||||
self.assertIndexExists("test_rnflit_pony", ["weight", "pink"])
|
||||
|
||||
def test_rename_field_with_db_column(self):
|
||||
project_state = self.apply_operations(
|
||||
"test_rfwdbc",
|
||||
|
|
Loading…
Reference in New Issue