Refs #27236 -- Moved models with Meta.index_together inside of test methods.

This commit is contained in:
David Wobrock 2022-06-02 21:03:00 +02:00 committed by Mariusz Felisiak
parent 61badf1d58
commit a3a1290d47
4 changed files with 40 additions and 40 deletions

View File

@ -43,15 +43,6 @@ class Article(models.Model):
] ]
# Model for index_together being used only with single list
class IndexTogetherSingleList(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateTimeField()
class Meta:
index_together = ["headline", "pub_date"]
class IndexedArticle(models.Model): class IndexedArticle(models.Model):
headline = models.CharField(max_length=100, db_index=True) headline = models.CharField(max_length=100, db_index=True)
body = models.TextField(db_index=True) body = models.TextField(db_index=True)

View File

@ -3,7 +3,15 @@ from unittest import skipUnless
from django.conf import settings from django.conf import settings
from django.db import connection from django.db import connection
from django.db.models import CASCADE, ForeignKey, Index, Q from django.db.models import (
CASCADE,
CharField,
DateTimeField,
ForeignKey,
Index,
Model,
Q,
)
from django.db.models.functions import Lower from django.db.models.functions import Lower
from django.test import ( from django.test import (
TestCase, TestCase,
@ -11,15 +19,10 @@ from django.test import (
skipIfDBFeature, skipIfDBFeature,
skipUnlessDBFeature, skipUnlessDBFeature,
) )
from django.test.utils import override_settings from django.test.utils import isolate_apps, override_settings
from django.utils import timezone from django.utils import timezone
from .models import ( from .models import Article, ArticleTranslation, IndexedArticle2
Article,
ArticleTranslation,
IndexedArticle2,
IndexTogetherSingleList,
)
class SchemaIndexesTests(TestCase): class SchemaIndexesTests(TestCase):
@ -79,8 +82,15 @@ class SchemaIndexesTests(TestCase):
index_sql[0], index_sql[0],
) )
@isolate_apps("indexes")
def test_index_together_single_list(self): def test_index_together_single_list(self):
# Test for using index_together with a single list (#22172) class IndexTogetherSingleList(Model):
headline = CharField(max_length=100)
pub_date = DateTimeField()
class Meta:
index_together = ["headline", "pub_date"]
index_sql = connection.schema_editor()._model_indexes_sql( index_sql = connection.schema_editor()._model_indexes_sql(
IndexTogetherSingleList IndexTogetherSingleList
) )

View File

@ -62,15 +62,6 @@ class AuthorWithUniqueName(models.Model):
apps = new_apps apps = new_apps
class AuthorWithIndexedNameAndBirthday(models.Model):
name = models.CharField(max_length=255)
birthday = models.DateField()
class Meta:
apps = new_apps
index_together = [["name", "birthday"]]
class AuthorWithUniqueNameAndBirthday(models.Model): class AuthorWithUniqueNameAndBirthday(models.Model):
name = models.CharField(max_length=255) name = models.CharField(max_length=255)
birthday = models.DateField() birthday = models.DateField()
@ -180,15 +171,6 @@ class Tag(models.Model):
apps = new_apps apps = new_apps
class TagIndexed(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(unique=True)
class Meta:
apps = new_apps
index_together = [["slug", "title"]]
class TagM2MTest(models.Model): class TagM2MTest(models.Model):
title = models.CharField(max_length=255) title = models.CharField(max_length=255)
slug = models.SlugField(unique=True) slug = models.SlugField(unique=True)

View File

@ -64,7 +64,6 @@ from .models import (
AuthorWithDefaultHeight, AuthorWithDefaultHeight,
AuthorWithEvenLongerName, AuthorWithEvenLongerName,
AuthorWithIndexedName, AuthorWithIndexedName,
AuthorWithIndexedNameAndBirthday,
AuthorWithUniqueName, AuthorWithUniqueName,
AuthorWithUniqueNameAndBirthday, AuthorWithUniqueNameAndBirthday,
Book, Book,
@ -79,7 +78,6 @@ from .models import (
Note, Note,
NoteRename, NoteRename,
Tag, Tag,
TagIndexed,
TagM2MTest, TagM2MTest,
TagUniqueRename, TagUniqueRename,
Thing, Thing,
@ -114,7 +112,6 @@ class SchemaTests(TransactionTestCase):
Node, Node,
Note, Note,
Tag, Tag,
TagIndexed,
TagM2MTest, TagM2MTest,
TagUniqueRename, TagUniqueRename,
Thing, Thing,
@ -2952,13 +2949,24 @@ class SchemaTests(TransactionTestCase):
with connection.schema_editor() as editor: with connection.schema_editor() as editor:
editor.alter_index_together(Book, [["author", "title"]], []) editor.alter_index_together(Book, [["author", "title"]], [])
@isolate_apps("schema")
def test_create_index_together(self): def test_create_index_together(self):
""" """
Tests creating models with index_together already defined Tests creating models with index_together already defined
""" """
class TagIndexed(Model):
title = CharField(max_length=255)
slug = SlugField(unique=True)
class Meta:
app_label = "schema"
index_together = [["slug", "title"]]
# Create the table # Create the table
with connection.schema_editor() as editor: with connection.schema_editor() as editor:
editor.create_model(TagIndexed) editor.create_model(TagIndexed)
self.isolated_local_models = [TagIndexed]
# Ensure there is an index # Ensure there is an index
self.assertIs( self.assertIs(
any( any(
@ -2970,10 +2978,19 @@ class SchemaTests(TransactionTestCase):
) )
@skipUnlessDBFeature("allows_multiple_constraints_on_same_fields") @skipUnlessDBFeature("allows_multiple_constraints_on_same_fields")
@isolate_apps("schema")
def test_remove_index_together_does_not_remove_meta_indexes(self): def test_remove_index_together_does_not_remove_meta_indexes(self):
class AuthorWithIndexedNameAndBirthday(Model):
name = CharField(max_length=255)
birthday = DateField()
class Meta:
app_label = "schema"
index_together = [["name", "birthday"]]
with connection.schema_editor() as editor: with connection.schema_editor() as editor:
editor.create_model(AuthorWithIndexedNameAndBirthday) editor.create_model(AuthorWithIndexedNameAndBirthday)
self.local_models = [AuthorWithIndexedNameAndBirthday] self.isolated_local_models = [AuthorWithIndexedNameAndBirthday]
# Add the custom index # Add the custom index
index = Index(fields=["name", "birthday"], name="author_name_birthday_idx") index = Index(fields=["name", "birthday"], name="author_name_birthday_idx")
custom_index_name = index.name custom_index_name = index.name