def test_alter_unique_together(self):
project_state = self.set_up_test_model()
operation = migrations.AlterUniqueTogether('Pony', [('pink', 'weight')])
new_state = project_state.clone()
operation.state_forwards('tests', new_state)
@all_schemata
def insert(cursor, **kwargs):
cursor.execute('INSERT INTO tests_pony (pink, weight) VALUES (1, 1)')
cursor.execute('INSERT INTO tests_pony (pink, weight) VALUES (1, 1)')
cursor.execute('DELETE FROM tests_pony')
@all_schemata
def insert_fail(cursor, **kwargs):
cursor.execute('INSERT INTO tests_pony (pink, weight) VALUES (1, 1)')
with self.assertRaises(IntegrityError):
with atomic():
cursor.execute('INSERT INTO tests_pony (pink, weight) VALUES (1, 1)')
cursor.execute('DELETE FROM tests_pony')
with connection.cursor() as cursor:
insert(cursor)
with connection.schema_editor() as editor:
operation.database_forwards('tests', editor, project_state, new_state)
insert_fail(cursor)
with connection.schema_editor() as editor:
operation.database_backwards('tests', editor, new_state, project_state)
insert(cursor)