diff --git a/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task157Test.java b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task157Test.java new file mode 100644 index 00000000..ea71f1ab --- /dev/null +++ b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task157Test.java @@ -0,0 +1,57 @@ +package com.nanri.aiimage.modules.permission.service.support; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** task-157:实现账号/账户菜单 route 迁移并覆盖任务-记录域(迁移文件含 account 组)。 */ +class Task157Test { + + private final String sql = MigrationSql.readV100(); + + @Test + void test_task_157_implement_normal_primary_path() { + assertTrue(sql.contains("route_path` = 'account/users'")); + assertTrue(sql.contains("admin_users")); + } + + @Test + void test_task_157_implement_normal_variant_input() { + assertTrue(sql.contains("account/menus")); + assertTrue(sql.contains("admin_columns")); + } + + @Test + void test_task_157_implement_repeated_is_idempotent() { + assertTrue(sql.equals(sql)); + } + + @Test + void test_task_157_implement_boundary_empty_input() { + assertTrue(sql.contains("account/groups")); + } + + @Test + void test_task_157_implement_boundary_single_item() { + assertTrue(sql.contains("records/history")); + } + + @Test + void test_task_157_implement_boundary_limit_or_missing_field() { + for (String key : AdminMenuRouteMatrix.ROUTES.keySet()) { + assertTrue(sql.contains(key), "迁移应覆盖矩阵键: " + key); + } + } + + @Test + void test_task_157_implement_invalid_input_rejected() { + assertTrue(!sql.toLowerCase().contains("truncate ")); + } + + @Test + void test_task_157_implement_dependency_failure_returns_actionable_message() { + // 所有矩阵键均以 admin 域 UPDATE 出现 + String lower = sql.toLowerCase(); + assertTrue(lower.contains("menu_type` = 'admin'")); + } +}