task-142(Java 菜单树与 Flyway): 定义 menu_type=admin 过滤规则
filterByMenuType 单测(Task142Test 8 用例)。 TDD: RED→GREEN。
This commit is contained in:
+67
@@ -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<PermissionMenuItemVo> 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<PermissionMenuItemVo> 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user