Add (failing) tests cases for makeing a column not null with a Django default value

This commit is contained in:
David Wobrock committed 2020-06-20 18:08:16 +02:00
1 parent d411ea2f6b
commit f21ff2c278
16 files changed
+174

No files matched your search

+38
View File
@@ -64,6 +64,25 @@ class MySqlAnalyserTestCase(SqlAnalyserTestCase):
]
self.assertValidSql(sql)
def test_make_column_not_null_with_django_default(self):
sql = [
"ALTER TABLE `app_drop_default_a` ALTER COLUMN `col` SET DEFAULT 'empty';",
"UPDATE `app_drop_default_a` SET `col` = 'empty' WHERE `col` IS NULL;",
"ALTER TABLE `app_drop_default_a` MODIFY `col` varchar(10) NOT NULL;",
"ALTER TABLE `app_drop_default_a` ALTER COLUMN `col` DROP DEFAULT;",
]
self.assertBackwardIncompatibleSql(sql)
def test_make_column_not_null_with_lib_default(self):
sql = [
"ALTER TABLE `app_drop_default_a` ALTER COLUMN `col` SET DEFAULT 'empty';",
"UPDATE `app_drop_default_a` SET `col` = 'empty' WHERE `col` IS NULL;",
"ALTER TABLE `app_drop_default_a` MODIFY `col` varchar(10) NOT NULL;",
"ALTER TABLE `app_drop_default_a` ALTER COLUMN `col` DROP DEFAULT;",
"ALTER TABLE `app_drop_default_a` ALTER COLUMN `col` SET DEFAULT 'empty';",
]
self.assertValidSql(sql)
class SqliteAnalyserTestCase(SqlAnalyserTestCase):
database_vendor = "sqlite"
@@ -165,3 +184,22 @@ class PostgresqlAnalyserTestCase(SqlAnalyserTestCase):
'CREATE INDEX "app_add_manytomany_field_b_many_to_many_a_id_4b44832a" ON "app_add_manytomany_field_b_many_to_many"("a_id");',
]
self.assertValidSql(sql)
def test_make_column_not_null_with_django_default(self):
sql = [
'ALTER TABLE "app_drop_default_a" ALTER COLUMN "col" SET DEFAULT \'empty\';',
'UPDATE "app_drop_default_a" SET "col" = \'empty\' WHERE "col" IS NULL;',
'ALTER TABLE "app_drop_default_a" ALTER COLUMN "col" SET NOT NULL;',
'ALTER TABLE "app_drop_default_a" ALTER COLUMN "col" DROP DEFAULT;',
]
self.assertBackwardIncompatibleSql(sql)
def test_make_column_not_null_with_lib_default(self):
sql = [
'ALTER TABLE "app_drop_default_a" ALTER COLUMN "col" SET DEFAULT \'empty\';',
'UPDATE "app_drop_default_a" SET "col" = \'empty\' WHERE "col" IS NULL;',
'ALTER TABLE "app_drop_default_a" ALTER COLUMN "col" SET NOT NULL;',
'ALTER TABLE "app_drop_default_a" ALTER COLUMN "col" DROP DEFAULT;',
'ALTER TABLE "app_drop_default_a" ALTER COLUMN "col" SET DEFAULT `\'empty\';',
]
self.assertValidSql(sql)