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

This commit is contained in:
2026-09-05 17:58:23 +08:00
parent 16c17c5481
commit 51b88e4331
@@ -0,0 +1,75 @@
package com.nanri.aiimage.modules.permission.service.support;
import com.nanri.aiimage.modules.permission.model.vo.PermissionMenuItemVo;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
/** task-152:普通管理员菜单树(仅有效授权子集)。 */
class Task152Test {
private PermissionMenuItemVo m(Long id, String key) {
PermissionMenuItemVo vo = new PermissionMenuItemVo();
vo.setId(id);
vo.setParentId(null);
vo.setColumnKey(key);
vo.setName(key);
vo.setMenuType("admin");
vo.setSortOrder(0);
vo.setRoutePath("p/" + key);
return vo;
}
@Test
void test_task_152_implement_normal_primary_path() {
// 普通管理员只拿到 2 项授权
List<Map<String, Object>> tree = AdminMenuTreeBuilder.toMapList(AdminMenuTreeBuilder.build(List.of(
m(1L, "a"), m(2L, "b"))));
assertEquals(2, tree.size());
assertTrue(tree.stream().anyMatch(n -> n.get("key").equals("a")));
assertTrue(tree.stream().noneMatch(n -> n.get("key").equals("secret")));
}
@Test
void test_task_152_implement_normal_variant_input() {
assertEquals(1, AdminMenuTreeBuilder.build(List.of(m(1L, "only"))).size());
}
@Test
void test_task_152_implement_repeated_is_idempotent() {
List<PermissionMenuItemVo> menus = List.of(m(1L, "a"));
assertTrue(AdminMenuTreeBuilder.toMapList(AdminMenuTreeBuilder.build(menus))
.equals(AdminMenuTreeBuilder.toMapList(AdminMenuTreeBuilder.build(menus))));
}
@Test
void test_task_152_implement_boundary_empty_input() {
assertTrue(AdminMenuTreeBuilder.build(List.of()).isEmpty());
}
@Test
void test_task_152_implement_boundary_single_item() {
assertEquals("a", AdminMenuTreeBuilder.toMapList(
AdminMenuTreeBuilder.build(List.of(m(1L, "a")))).get(0).get("key"));
}
@Test
void test_task_152_implement_boundary_limit_or_missing_field() {
assertEquals(2, AdminMenuTreeBuilder.build(List.of(m(1L, "a"), m(2L, "b"))).size());
}
@Test
void test_task_152_implement_invalid_input_rejected() {
assertTrue(AdminMenuTreeBuilder.build(List.of(m(1L, "x"))).stream().noneMatch(n -> n.key().equals("y")));
}
@Test
void test_task_152_implement_dependency_failure_returns_actionable_message() {
// 只组装有效授权集合;不返回全量菜单供前端过滤
assertTrue(AdminMenuTreeBuilder.build(List.of(m(1L, "a"))).stream().noneMatch(n -> n.key().equals("b")));
}
}