mirror of
https://github.com/django/django.git
synced 2025-09-09 04:00:48 +00:00
Refs #25530 -- Renamed deferred SQL references on rename operation.
This commit is contained in:
parent
3b429c9673
commit
b50815ee41
4 changed files with 135 additions and 0 deletions
|
@ -12,6 +12,14 @@ class TableTests(SimpleTestCase):
|
|||
self.assertIs(self.reference.references_table('table'), True)
|
||||
self.assertIs(self.reference.references_table('other'), False)
|
||||
|
||||
def test_rename_table_references(self):
|
||||
self.reference.rename_table_references('other', 'table')
|
||||
self.assertIs(self.reference.references_table('table'), True)
|
||||
self.assertIs(self.reference.references_table('other'), False)
|
||||
self.reference.rename_table_references('table', 'other')
|
||||
self.assertIs(self.reference.references_table('table'), False)
|
||||
self.assertIs(self.reference.references_table('other'), True)
|
||||
|
||||
def test_repr(self):
|
||||
self.assertEqual(repr(self.reference), "<Table 'TABLE'>")
|
||||
|
||||
|
@ -30,6 +38,18 @@ class ColumnsTests(TableTests):
|
|||
self.assertIs(self.reference.references_column('table', 'third_column'), False)
|
||||
self.assertIs(self.reference.references_column('table', 'first_column'), True)
|
||||
|
||||
def test_rename_column_references(self):
|
||||
self.reference.rename_column_references('other', 'first_column', 'third_column')
|
||||
self.assertIs(self.reference.references_column('table', 'first_column'), True)
|
||||
self.assertIs(self.reference.references_column('table', 'third_column'), False)
|
||||
self.assertIs(self.reference.references_column('other', 'third_column'), False)
|
||||
self.reference.rename_column_references('table', 'third_column', 'first_column')
|
||||
self.assertIs(self.reference.references_column('table', 'first_column'), True)
|
||||
self.assertIs(self.reference.references_column('table', 'third_column'), False)
|
||||
self.reference.rename_column_references('table', 'first_column', 'third_column')
|
||||
self.assertIs(self.reference.references_column('table', 'first_column'), False)
|
||||
self.assertIs(self.reference.references_column('table', 'third_column'), True)
|
||||
|
||||
def test_repr(self):
|
||||
self.assertEqual(repr(self.reference), "<Columns 'FIRST_COLUMN, SECOND_COLUMN'>")
|
||||
|
||||
|
@ -72,6 +92,21 @@ class ForeignKeyNameTests(IndexNameTests):
|
|||
self.assertIs(self.reference.references_column('to_table', 'second_column'), False)
|
||||
self.assertIs(self.reference.references_column('to_table', 'to_second_column'), True)
|
||||
|
||||
def test_rename_table_references(self):
|
||||
super().test_rename_table_references()
|
||||
self.reference.rename_table_references('to_table', 'other_to_table')
|
||||
self.assertIs(self.reference.references_table('other_to_table'), True)
|
||||
self.assertIs(self.reference.references_table('to_table'), False)
|
||||
|
||||
def test_rename_column_references(self):
|
||||
super().test_rename_column_references()
|
||||
self.reference.rename_column_references('to_table', 'second_column', 'third_column')
|
||||
self.assertIs(self.reference.references_column('table', 'second_column'), True)
|
||||
self.assertIs(self.reference.references_column('to_table', 'to_second_column'), True)
|
||||
self.reference.rename_column_references('to_table', 'to_first_column', 'to_third_column')
|
||||
self.assertIs(self.reference.references_column('to_table', 'to_first_column'), False)
|
||||
self.assertIs(self.reference.references_column('to_table', 'to_third_column'), True)
|
||||
|
||||
def test_repr(self):
|
||||
self.assertEqual(
|
||||
repr(self.reference),
|
||||
|
@ -99,6 +134,17 @@ class MockReference(object):
|
|||
def references_column(self, table, column):
|
||||
return (table, column) in self.referenced_columns
|
||||
|
||||
def rename_table_references(self, old_table, new_table):
|
||||
if old_table in self.referenced_tables:
|
||||
self.referenced_tables.remove(old_table)
|
||||
self.referenced_tables.add(new_table)
|
||||
|
||||
def rename_column_references(self, table, old_column, new_column):
|
||||
column = (table, old_column)
|
||||
if column in self.referenced_columns:
|
||||
self.referenced_columns.remove(column)
|
||||
self.referenced_columns.add((table, new_column))
|
||||
|
||||
def __str__(self):
|
||||
return self.representation
|
||||
|
||||
|
@ -114,6 +160,18 @@ class StatementTests(SimpleTestCase):
|
|||
self.assertIs(statement.references_column('table', 'column'), True)
|
||||
self.assertIs(statement.references_column('other', 'column'), False)
|
||||
|
||||
def test_rename_table_references(self):
|
||||
reference = MockReference('', {'table'}, {})
|
||||
statement = Statement('', reference=reference, non_reference='')
|
||||
statement.rename_table_references('table', 'other')
|
||||
self.assertEqual(reference.referenced_tables, {'other'})
|
||||
|
||||
def test_rename_column_references(self):
|
||||
reference = MockReference('', {}, {('table', 'column')})
|
||||
statement = Statement('', reference=reference, non_reference='')
|
||||
statement.rename_column_references('table', 'column', 'other')
|
||||
self.assertEqual(reference.referenced_columns, {('table', 'other')})
|
||||
|
||||
def test_repr(self):
|
||||
reference = MockReference('reference', {}, {})
|
||||
statement = Statement("%(reference)s - %(non_reference)s", reference=reference, non_reference='non_reference')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue