From ee73d7d683ab2a694e7867180819e85777af2fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=87=AA=E8=BE=BE?= <980324341@qq.com> Date: Sat, 5 Sep 2026 18:01:12 +0800 Subject: [PATCH] =?UTF-8?q?task-155(Java=20=E8=8F=9C=E5=8D=95=E6=A0=91?= =?UTF-8?q?=E4=B8=8E=20Flyway):=20Task155Test=208=20=E7=94=A8=E4=BE=8B=20R?= =?UTF-8?q?ED=E2=86=92GREEN=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/support/Task155Test.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task155Test.java diff --git a/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task155Test.java b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task155Test.java new file mode 100644 index 00000000..f1252ed8 --- /dev/null +++ b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task155Test.java @@ -0,0 +1,58 @@ +package com.nanri.aiimage.modules.permission.service.support; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** task-155:实现 ASIN 和店铺菜单 route 迁移(迁移文件含对应 UPDATE)。 */ +class Task155Test { + + private final String sql = MigrationSql.readV100(); + + @Test + void test_task_155_implement_normal_primary_path() { + assertTrue(sql.contains("asin-center/registry")); + assertTrue(sql.contains("admin_dedupe_total_data")); + } + + @Test + void test_task_155_implement_normal_variant_input() { + assertTrue(sql.contains("shop-center/shops")); + assertTrue(sql.contains("admin_shop_manage")); + } + + @Test + void test_task_155_implement_repeated_is_idempotent() { + assertTrue(sql.equals(sql)); + } + + @Test + void test_task_155_implement_boundary_empty_input() { + assertTrue(sql.contains("UPDATE `columns` SET `route_path`")); + } + + @Test + void test_task_155_implement_boundary_single_item() { + assertTrue(sql.contains("route_path` = 'asin-center/registry'")); + } + + @Test + void test_task_155_implement_boundary_limit_or_missing_field() { + assertTrue(sql.contains("menu_type` = 'admin' AND `column_key` = 'admin_dedupe_total_data'")); + } + + @Test + void test_task_155_implement_invalid_input_rejected() { + assertTrue(!sql.toLowerCase().contains("alter table")); + } + + @Test + void test_task_155_implement_dependency_failure_returns_actionable_message() { + // 仅 UPDATE route_path,不出现 INSERT/DELETE/ALTER/DROP 语句 + String lower = sql.toLowerCase(); + assertTrue(!lower.contains("insert ") + && !lower.contains("delete ") + && !lower.contains("alter ") + && !lower.contains("drop ")); + } +}