fix conflict
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
import tortoise
|
||||
from pytest_mock import MockerFixture
|
||||
|
||||
from aerich.ddl.mysql import MysqlDDL
|
||||
@@ -102,6 +103,21 @@ old_models_describe = {
|
||||
"constraints": {"ge": 1, "le": 2147483647},
|
||||
"db_field_types": {"": "INT"},
|
||||
},
|
||||
{
|
||||
"name": "title",
|
||||
"field_type": "CharField",
|
||||
"db_column": "title",
|
||||
"python_type": "str",
|
||||
"generated": False,
|
||||
"nullable": False,
|
||||
"unique": True,
|
||||
"indexed": True,
|
||||
"default": None,
|
||||
"description": None,
|
||||
"docstring": None,
|
||||
"constraints": {"max_length": 20},
|
||||
"db_field_types": {"": "VARCHAR(20)"},
|
||||
},
|
||||
],
|
||||
"fk_fields": [
|
||||
{
|
||||
@@ -775,6 +791,16 @@ old_models_describe = {
|
||||
}
|
||||
|
||||
|
||||
def should_add_user_id_column_type_alter_sql() -> bool:
|
||||
# tortoise-orm>=0.21 changes IntField constraints
|
||||
# from {"ge": 1, "le": 2147483647} to {"ge": -2147483648,"le": 2147483647}
|
||||
user_id_constraints = old_models_describe["models.Category"]["data_fields"][-1]["constraints"]
|
||||
return (
|
||||
tortoise.__version__ >= "0.21"
|
||||
and tortoise.fields.data.IntField.constraints != user_id_constraints
|
||||
)
|
||||
|
||||
|
||||
def test_migrate(mocker: MockerFixture):
|
||||
"""
|
||||
models.py diff with old_models.py
|
||||
@@ -785,7 +811,8 @@ def test_migrate(mocker: MockerFixture):
|
||||
- drop field: User.avatar
|
||||
- add index: Email.email
|
||||
- add many to many: Email.users
|
||||
- remove unique: User.username
|
||||
- remove unique: Category.title
|
||||
- add unique: User.username
|
||||
- change column: length User.password
|
||||
- add unique_together: (name,type) of Product
|
||||
- alter default: Config.status
|
||||
@@ -807,6 +834,7 @@ def test_migrate(mocker: MockerFixture):
|
||||
expected_upgrade_operators = {
|
||||
"ALTER TABLE `category` MODIFY COLUMN `name` VARCHAR(200)",
|
||||
"ALTER TABLE `category` MODIFY COLUMN `slug` VARCHAR(100) NOT NULL",
|
||||
"ALTER TABLE `category` DROP INDEX `title`",
|
||||
"ALTER TABLE `config` ADD `user_id` INT NOT NULL COMMENT 'User'",
|
||||
"ALTER TABLE `config` ADD CONSTRAINT `fk_config_user_17daa970` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE",
|
||||
"ALTER TABLE `config` ALTER COLUMN `status` DROP DEFAULT",
|
||||
@@ -829,7 +857,7 @@ def test_migrate(mocker: MockerFixture):
|
||||
"ALTER TABLE `user` MODIFY COLUMN `is_active` BOOL NOT NULL COMMENT 'Is Active' DEFAULT 1",
|
||||
"ALTER TABLE `user` MODIFY COLUMN `is_superuser` BOOL NOT NULL COMMENT 'Is SuperUser' DEFAULT 0",
|
||||
"ALTER TABLE `user` MODIFY COLUMN `longitude` DECIMAL(10,8) NOT NULL",
|
||||
"ALTER TABLE `user` ADD UNIQUE INDEX `uid_user_usernam_9987ab` (`username`)",
|
||||
"ALTER TABLE `user` ADD UNIQUE INDEX `username` (`username`)",
|
||||
"CREATE TABLE `email_user` (\n `email_id` INT NOT NULL REFERENCES `email` (`email_id`) ON DELETE CASCADE,\n `user_id` INT NOT NULL REFERENCES `user` (`id`) ON DELETE CASCADE\n) CHARACTER SET utf8mb4",
|
||||
"CREATE TABLE IF NOT EXISTS `newmodel` (\n `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,\n `name` VARCHAR(50) NOT NULL\n) CHARACTER SET utf8mb4",
|
||||
"ALTER TABLE `category` MODIFY COLUMN `created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)",
|
||||
@@ -839,6 +867,7 @@ def test_migrate(mocker: MockerFixture):
|
||||
expected_downgrade_operators = {
|
||||
"ALTER TABLE `category` MODIFY COLUMN `name` VARCHAR(200) NOT NULL",
|
||||
"ALTER TABLE `category` MODIFY COLUMN `slug` VARCHAR(200) NOT NULL",
|
||||
"ALTER TABLE `category` ADD UNIQUE INDEX `title` (`title`)",
|
||||
"ALTER TABLE `config` DROP COLUMN `user_id`",
|
||||
"ALTER TABLE `config` DROP FOREIGN KEY `fk_config_user_17daa970`",
|
||||
"ALTER TABLE `config` ALTER COLUMN `status` SET DEFAULT 1",
|
||||
@@ -852,7 +881,7 @@ def test_migrate(mocker: MockerFixture):
|
||||
"ALTER TABLE `product` DROP INDEX `uid_product_name_869427`",
|
||||
"ALTER TABLE `product` ALTER COLUMN `view_num` DROP DEFAULT",
|
||||
"ALTER TABLE `user` ADD `avatar` VARCHAR(200) NOT NULL DEFAULT ''",
|
||||
"ALTER TABLE `user` DROP INDEX `idx_user_usernam_9987ab`",
|
||||
"ALTER TABLE `user` DROP INDEX `username`",
|
||||
"ALTER TABLE `user` MODIFY COLUMN `password` VARCHAR(200) NOT NULL",
|
||||
"DROP TABLE IF EXISTS `email_user`",
|
||||
"DROP TABLE IF EXISTS `newmodel`",
|
||||
@@ -868,6 +897,10 @@ def test_migrate(mocker: MockerFixture):
|
||||
"ALTER TABLE `product` MODIFY COLUMN `body` LONGTEXT NOT NULL",
|
||||
"ALTER TABLE `email` MODIFY COLUMN `is_primary` BOOL NOT NULL DEFAULT 0",
|
||||
}
|
||||
if should_add_user_id_column_type_alter_sql():
|
||||
sql = "ALTER TABLE `category` MODIFY COLUMN `user_id` INT NOT NULL COMMENT 'User'"
|
||||
expected_upgrade_operators.add(sql)
|
||||
expected_downgrade_operators.add(sql)
|
||||
assert not set(Migrate.upgrade_operators).symmetric_difference(expected_upgrade_operators)
|
||||
|
||||
assert not set(Migrate.downgrade_operators).symmetric_difference(
|
||||
@@ -876,6 +909,7 @@ def test_migrate(mocker: MockerFixture):
|
||||
|
||||
elif isinstance(Migrate.ddl, PostgresDDL):
|
||||
expected_upgrade_operators = {
|
||||
'DROP INDEX "uid_category_title_f7fc03"',
|
||||
'ALTER TABLE "category" ALTER COLUMN "name" DROP NOT NULL',
|
||||
'ALTER TABLE "category" ALTER COLUMN "slug" TYPE VARCHAR(100) USING "slug"::VARCHAR(100)',
|
||||
'ALTER TABLE "category" ALTER COLUMN "created_at" TYPE TIMESTAMPTZ USING "created_at"::TIMESTAMPTZ',
|
||||
@@ -908,6 +942,7 @@ def test_migrate(mocker: MockerFixture):
|
||||
'CREATE UNIQUE INDEX "uid_user_usernam_9987ab" ON "user" ("username")',
|
||||
}
|
||||
expected_downgrade_operators = {
|
||||
'CREATE UNIQUE INDEX "uid_category_title_f7fc03" ON "category" ("title")',
|
||||
'ALTER TABLE "category" ALTER COLUMN "name" SET NOT NULL',
|
||||
'ALTER TABLE "category" ALTER COLUMN "slug" TYPE VARCHAR(200) USING "slug"::VARCHAR(200)',
|
||||
'ALTER TABLE "category" ALTER COLUMN "created_at" TYPE TIMESTAMPTZ USING "created_at"::TIMESTAMPTZ',
|
||||
@@ -934,11 +969,15 @@ def test_migrate(mocker: MockerFixture):
|
||||
'ALTER TABLE "product" ALTER COLUMN "body" TYPE TEXT USING "body"::TEXT',
|
||||
'DROP INDEX "idx_product_name_869427"',
|
||||
'DROP INDEX "idx_email_email_4a1a33"',
|
||||
'DROP INDEX "idx_user_usernam_9987ab"',
|
||||
'DROP INDEX "uid_user_usernam_9987ab"',
|
||||
'DROP INDEX "uid_product_name_869427"',
|
||||
'DROP TABLE IF EXISTS "email_user"',
|
||||
'DROP TABLE IF EXISTS "newmodel"',
|
||||
}
|
||||
if should_add_user_id_column_type_alter_sql():
|
||||
sql = 'ALTER TABLE "category" ALTER COLUMN "user_id" TYPE INT USING "user_id"::INT'
|
||||
expected_upgrade_operators.add(sql)
|
||||
expected_downgrade_operators.add(sql)
|
||||
assert not set(Migrate.upgrade_operators).symmetric_difference(expected_upgrade_operators)
|
||||
assert not set(Migrate.downgrade_operators).symmetric_difference(
|
||||
expected_downgrade_operators
|
||||
|
Reference in New Issue
Block a user