diff --git a/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task152Test.java b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task152Test.java new file mode 100644 index 00000000..e0e2743b --- /dev/null +++ b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task152Test.java @@ -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> 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 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"))); + } +}