Add tests for RunSQL tests

This commit is contained in:
David-Wobrock authored and David Wobrock committed 2020-11-26 19:02:57 +01:00
1 parent f5d0da4932
commit f795fa07d2
1 file changed
+37
+37
View File
@@ -2,6 +2,7 @@ import os
import unittest
from django.conf import settings
from django.db import migrations
from django_migration_linter import MigrationLinter
from tests import fixtures
@@ -239,3 +240,39 @@ class DataMigrationModelVariableNamingTestCase(unittest.TestCase):
issues = MigrationLinter.get_runpython_model_variable_naming_issues(forward_op)
self.assertEqual(1, len(issues))
class RunSQLMigrationTestCase(unittest.TestCase):
def setUp(self):
test_project_path = os.path.dirname(settings.BASE_DIR)
self.linter = MigrationLinter(
test_project_path,
include_apps=fixtures.DATA_MIGRATIONS,
)
def test_missing_reserve_migration(self):
runsql = migrations.RunSQL("sql;")
error, ignored, warning = self.linter.lint_runsql(runsql)
self.assertEqual("REVERSIBLE_RUNSQL_DATA_MIGRATION", warning[0]["code"])
def test_sql_linting_error(self):
runsql = migrations.RunSQL("ALTER TABLE t DROP COLUMN t;")
error, ignored, warning = self.linter.lint_runsql(runsql)
self.assertEqual("DROP_COLUMN", error[0]["code"])
def test_sql_linting_error_array(self):
runsql = migrations.RunSQL(
["ALTER TABLE t DROP COLUMN c;", "ALTER TABLE t RENAME COLUMN c;"]
)
error, ignored, warning = self.linter.lint_runsql(runsql)
self.assertEqual("DROP_COLUMN", error[0]["code"])
self.assertEqual("RENAME_COLUMN", error[1]["code"])
def test_sql_linting_error_args(self):
runsql = migrations.RunSQL([("ALTER TABLE %s DROP COLUMN %s;", ("t", "c"))])
error, ignored, warning = self.linter.lint_runsql(runsql)
self.assertEqual("DROP_COLUMN", error[0]["code"])