瀏覽代碼

Refs #31468 -- Added tests for MigrationAutodetector.suggest_name().

Adam Johnson 4 年之前
父節點
當前提交
5bd585a82d
共有 1 個文件被更改,包括 23 次插入4 次删除
  1. 23 4
      tests/migrations/test_autodetector.py

+ 23 - 4
tests/migrations/test_autodetector.py

@@ -6,13 +6,13 @@ from django.apps import apps
 from django.conf import settings
 from django.contrib.auth.models import AbstractBaseUser
 from django.core.validators import RegexValidator, validate_slug
-from django.db import connection, models
+from django.db import connection, migrations, models
 from django.db.migrations.autodetector import MigrationAutodetector
 from django.db.migrations.graph import MigrationGraph
 from django.db.migrations.loader import MigrationLoader
 from django.db.migrations.questioner import MigrationQuestioner
 from django.db.migrations.state import ModelState, ProjectState
-from django.test import TestCase, override_settings
+from django.test import SimpleTestCase, TestCase, override_settings
 from django.test.utils import isolate_lru_cache
 
 from .models import FoodManager, FoodQuerySet
@@ -464,9 +464,9 @@ class AutodetectorTests(TestCase):
 
     def repr_changes(self, changes, include_dependencies=False):
         output = ""
-        for app_label, migrations in sorted(changes.items()):
+        for app_label, migrations_ in sorted(changes.items()):
             output += "  %s:\n" % app_label
-            for migration in migrations:
+            for migration in migrations_:
                 output += "    %s\n" % migration.name
                 for operation in migration.operations:
                     output += "      %s\n" % operation
@@ -2479,3 +2479,22 @@ class AutodetectorTests(TestCase):
         self.assertOperationTypes(changes, 'app', 0, ['RemoveField', 'CreateModel'])
         self.assertOperationAttributes(changes, 'app', 0, 0, name='title', model_name='readable')
         self.assertOperationAttributes(changes, 'app', 0, 1, name='book')
+
+
+class AutodetectorSuggestNameTests(SimpleTestCase):
+    def test_single_operation(self):
+        ops = [migrations.CreateModel('Person', fields=[])]
+        self.assertEqual(MigrationAutodetector.suggest_name(ops), 'person')
+        ops = [migrations.DeleteModel('Person')]
+        self.assertEqual(MigrationAutodetector.suggest_name(ops), 'delete_person')
+
+    def test_two_create_models(self):
+        ops = [
+            migrations.CreateModel('Person', fields=[]),
+            migrations.CreateModel('Animal', fields=[]),
+        ]
+        self.assertEqual(MigrationAutodetector.suggest_name(ops), 'animal_person')
+
+    def test_auto(self):
+        suggest_name = MigrationAutodetector.suggest_name([])
+        self.assertIs(suggest_name.startswith('auto_'), True)