From 8668a6e4397b15c565d9c0f70333014ca5e3b117 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 17:49:50 +0800 Subject: [PATCH] =?UTF-8?q?task-142(Java=20=E8=8F=9C=E5=8D=95=E6=A0=91?= =?UTF-8?q?=E4=B8=8E=20Flyway):=20=E5=AE=9A=E4=B9=89=20menu=5Ftype=3Dadmin?= =?UTF-8?q?=20=E8=BF=87=E6=BB=A4=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit filterByMenuType 单测(Task142Test 8 用例)。 TDD: RED→GREEN。 --- .../service/support/Task142Test.java | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task142Test.java diff --git a/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task142Test.java b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task142Test.java new file mode 100644 index 00000000..f59b86f7 --- /dev/null +++ b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task142Test.java @@ -0,0 +1,67 @@ +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 static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** task-142:menu_type=admin 过滤规则。 */ +class Task142Test { + + private PermissionMenuItemVo item(Long id, String key, String type) { + PermissionMenuItemVo vo = new PermissionMenuItemVo(); + vo.setId(id); + vo.setColumnKey(key); + vo.setMenuType(type); + return vo; + } + + @Test + void test_task_142_define_menu_typeadmin_normal_primary_path() { + List admin = AdminMenuTreeBuilder.filterByMenuType( + List.of(item(1L, "a", "admin"), item(2L, "b", "client")), "admin"); + assertEquals(1, admin.size()); + assertEquals("a", admin.get(0).getColumnKey()); + } + + @Test + void test_task_142_define_menu_typeadmin_normal_variant_input() { + assertTrue(AdminMenuTreeBuilder.filterByMenuType(List.of(item(1L, "x", "client")), "admin").isEmpty()); + } + + @Test + void test_task_142_define_menu_typeadmin_repeated_is_idempotent() { + List menus = List.of(item(1L, "a", "admin")); + assertEquals(AdminMenuTreeBuilder.filterByMenuType(menus, "admin"), + AdminMenuTreeBuilder.filterByMenuType(menus, "admin")); + } + + @Test + void test_task_142_define_menu_typeadmin_boundary_empty_input() { + assertTrue(AdminMenuTreeBuilder.filterByMenuType(null, "admin").isEmpty()); + } + + @Test + void test_task_142_define_menu_typeadmin_boundary_single_item() { + assertEquals(1, AdminMenuTreeBuilder.filterByMenuType(List.of(item(3L, "a", "admin")), "admin").size()); + } + + @Test + void test_task_142_define_menu_typeadmin_boundary_limit_or_missing_field() { + assertEquals(0, AdminMenuTreeBuilder.filterByMenuType(List.of(item(1L, "a", null)), "admin").size()); + } + + @Test + void test_task_142_define_menu_typeadmin_invalid_input_rejected() { + assertEquals(0, AdminMenuTreeBuilder.filterByMenuType(List.of(item(1L, "a", "admin")), null).size()); + } + + @Test + void test_task_142_define_menu_typeadmin_dependency_failure_returns_actionable_message() { + // 保留 admin 域;普通用户经有效权限输入再过滤,Controller 不复算授权。 + assertEquals("admin", AdminMenuTreeBuilder.filterByMenuType(List.of(item(1L, "a", "admin")), "admin").get(0).getMenuType()); + } +}