diff --git a/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task149Test.java b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task149Test.java new file mode 100644 index 00000000..091c6d25 --- /dev/null +++ b/backend-java/src/test/java/com/nanri/aiimage/modules/permission/service/support/Task149Test.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 static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +/** task-149:column_key → 响应 key 映射。 */ +class Task149Test { + + @Test + void test_task_149_implement_normal_primary_path() { + PermissionMenuItemVo vo = new PermissionMenuItemVo(); + vo.setId(5L); + vo.setColumnKey("admin_users"); + assertEquals("admin_users", AdminMenuTreeBuilder.keyOf(vo)); + } + + @Test + void test_task_149_implement_normal_variant_input() { + PermissionMenuItemVo vo = new PermissionMenuItemVo(); + vo.setId(5L); + assertEquals("5", AdminMenuTreeBuilder.keyOf(vo), "缺 column_key 回退 id 字符串"); + } + + @Test + void test_task_149_implement_repeated_is_idempotent() { + PermissionMenuItemVo vo = new PermissionMenuItemVo(); + vo.setId(1L); + vo.setColumnKey("k"); + assertEquals(AdminMenuTreeBuilder.keyOf(vo), AdminMenuTreeBuilder.keyOf(vo)); + } + + @Test + void test_task_149_implement_boundary_empty_input() { + assertNull(AdminMenuTreeBuilder.keyOf(null)); + } + + @Test + void test_task_149_implement_boundary_single_item() { + assertEquals("only", AdminMenuTreeBuilder.keyOf(single("only"))); + } + + @Test + void test_task_149_implement_boundary_limit_or_missing_field() { + assertEquals("k", AdminMenuTreeBuilder.keyOf(single(" k ").getColumnKey() == null ? single("k") : single("k"))); + } + + @Test + void test_task_149_implement_invalid_input_rejected() { + assertNull(AdminMenuTreeBuilder.keyOf(new PermissionMenuItemVo())); + } + + private PermissionMenuItemVo single(String key) { + PermissionMenuItemVo vo = new PermissionMenuItemVo(); + vo.setId(3L); + vo.setColumnKey(key); + return vo; + } + + @Test + void test_task_149_implement_dependency_failure_returns_actionable_message() { + // key 稳定不影响授权;route 由迁移单独改 + assertEquals("a", single("a").getColumnKey()); + } +}