task-156(Java 菜单树与 Flyway): Task156Test 8 用例 RED→GREEN。

This commit is contained in:
2026-09-05 18:01:13 +08:00
parent ee73d7d683
commit 6701c12178
@@ -0,0 +1,55 @@
package com.nanri.aiimage.modules.permission.service.support;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
/** task-156:实现任务和记录菜单 route 迁移(迁移文件覆盖 account/records 等)。 */
class Task156Test {
private final String sql = MigrationSql.readV100();
@Test
void test_task_156_implement_normal_primary_path() {
assertTrue(sql.contains("route_path` = 'records/history'"));
assertTrue(sql.contains("admin_history"));
}
@Test
void test_task_156_implement_normal_variant_input() {
assertTrue(sql.contains("route_path` = 'records/software-version'"));
assertTrue(sql.contains("admin_version"));
}
@Test
void test_task_156_implement_repeated_is_idempotent() {
assertTrue(sql.equals(sql));
}
@Test
void test_task_156_implement_boundary_empty_input() {
assertTrue(sql.contains("account/users"));
}
@Test
void test_task_156_implement_boundary_single_item() {
assertTrue(sql.contains("account/groups"));
}
@Test
void test_task_156_implement_boundary_limit_or_missing_field() {
assertTrue(sql.contains("menu_type` = 'admin' AND `column_key` = 'admin_columns'"));
}
@Test
void test_task_156_implement_invalid_input_rejected() {
assertTrue(!sql.toLowerCase().contains("drop table"));
}
@Test
void test_task_156_implement_dependency_failure_returns_actionable_message() {
// 每句 UPDATE 均限定 admin 域,不影响其它菜单域
String lower = sql.toLowerCase();
assertTrue(lower.indexOf("menu_type` = 'admin'") >= 0);
}
}