mirror of https://github.com/django/django.git
Refs #27558 -- Isolated indexes test on MySQL.
MySQL schema changes must be done in TransactionTestCase.
This commit is contained in:
parent
ebb85d1e79
commit
f94475e526
|
@ -3,7 +3,7 @@ from unittest import skipUnless
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
from django.db.models.deletion import CASCADE
|
from django.db.models.deletion import CASCADE
|
||||||
from django.db.models.fields.related import ForeignKey
|
from django.db.models.fields.related import ForeignKey
|
||||||
from django.test import TestCase
|
from django.test import TestCase, TransactionTestCase
|
||||||
|
|
||||||
from .models import Article, ArticleTranslation, IndexTogetherSingleList
|
from .models import Article, ArticleTranslation, IndexTogetherSingleList
|
||||||
|
|
||||||
|
@ -84,7 +84,11 @@ class SchemaIndexesTests(TestCase):
|
||||||
index_sql = connection.schema_editor()._model_indexes_sql(Article)
|
index_sql = connection.schema_editor()._model_indexes_sql(Article)
|
||||||
self.assertEqual(len(index_sql), 1)
|
self.assertEqual(len(index_sql), 1)
|
||||||
|
|
||||||
@skipUnless(connection.vendor == 'mysql', "This is a mysql-specific issue")
|
|
||||||
|
@skipUnless(connection.vendor == 'mysql', 'MySQL tests')
|
||||||
|
class SchemaIndexesMySQLTests(TransactionTestCase):
|
||||||
|
available_apps = ['indexes']
|
||||||
|
|
||||||
def test_no_index_for_foreignkey(self):
|
def test_no_index_for_foreignkey(self):
|
||||||
"""
|
"""
|
||||||
MySQL on InnoDB already creates indexes automatically for foreign keys.
|
MySQL on InnoDB already creates indexes automatically for foreign keys.
|
||||||
|
@ -103,12 +107,19 @@ class SchemaIndexesTests(TestCase):
|
||||||
|
|
||||||
# The index also shouldn't be created if the ForeignKey is added after
|
# The index also shouldn't be created if the ForeignKey is added after
|
||||||
# the model was created.
|
# the model was created.
|
||||||
with connection.schema_editor() as editor:
|
field_created = False
|
||||||
new_field = ForeignKey(Article, CASCADE)
|
try:
|
||||||
new_field.set_attributes_from_name('new_foreign_key')
|
with connection.schema_editor() as editor:
|
||||||
editor.add_field(ArticleTranslation, new_field)
|
new_field = ForeignKey(Article, CASCADE)
|
||||||
self.assertEqual(editor.deferred_sql, [
|
new_field.set_attributes_from_name('new_foreign_key')
|
||||||
'ALTER TABLE `indexes_articletranslation` '
|
editor.add_field(ArticleTranslation, new_field)
|
||||||
'ADD CONSTRAINT `indexes_articletrans_new_foreign_key_id_d27a9146_fk_indexes_a` '
|
field_created = True
|
||||||
'FOREIGN KEY (`new_foreign_key_id`) REFERENCES `indexes_article` (`id`)'
|
self.assertEqual(editor.deferred_sql, [
|
||||||
])
|
'ALTER TABLE `indexes_articletranslation` '
|
||||||
|
'ADD CONSTRAINT `indexes_articletrans_new_foreign_key_id_d27a9146_fk_indexes_a` '
|
||||||
|
'FOREIGN KEY (`new_foreign_key_id`) REFERENCES `indexes_article` (`id`)'
|
||||||
|
])
|
||||||
|
finally:
|
||||||
|
if field_created:
|
||||||
|
with connection.schema_editor() as editor:
|
||||||
|
editor.remove_field(ArticleTranslation, new_field)
|
||||||
|
|
Loading…
Reference in New Issue