task-146(Java 菜单树与 Flyway): Task146Test 8 用例 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.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
/** task-146:空父节点/脏数据处理(孤儿检测)。 */
|
||||||
|
class Task146Test {
|
||||||
|
|
||||||
|
private PermissionMenuItemVo m(Long id, Long parent) {
|
||||||
|
PermissionMenuItemVo vo = new PermissionMenuItemVo();
|
||||||
|
vo.setId(id);
|
||||||
|
vo.setParentId(parent);
|
||||||
|
vo.setColumnKey("k" + id);
|
||||||
|
vo.setMenuType("admin");
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_task_146_implement_normal_primary_path() {
|
||||||
|
assertFalse(AdminMenuTreeBuilder.hasOrphanParent(List.of(m(1L, null), m(2L, 1L))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_task_146_implement_normal_variant_input() {
|
||||||
|
assertTrue(AdminMenuTreeBuilder.hasOrphanParent(List.of(m(1L, null), m(2L, 99L))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_task_146_implement_repeated_is_idempotent() {
|
||||||
|
List<PermissionMenuItemVo> menus = List.of(m(1L, null), m(2L, 99L));
|
||||||
|
assertTrue(AdminMenuTreeBuilder.hasOrphanParent(menus) == AdminMenuTreeBuilder.hasOrphanParent(menus));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_task_146_implement_boundary_empty_input() {
|
||||||
|
assertFalse(AdminMenuTreeBuilder.hasOrphanParent(null));
|
||||||
|
assertFalse(AdminMenuTreeBuilder.hasOrphanParent(List.of()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_task_146_implement_boundary_single_item() {
|
||||||
|
assertFalse(AdminMenuTreeBuilder.hasOrphanParent(List.of(m(1L, null))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_task_146_implement_boundary_limit_or_missing_field() {
|
||||||
|
// null 项忽略
|
||||||
|
assertFalse(AdminMenuTreeBuilder.hasOrphanParent(Arrays.asList((PermissionMenuItemVo) null)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_task_146_implement_invalid_input_rejected() {
|
||||||
|
assertTrue(AdminMenuTreeBuilder.hasOrphanParent(List.of(m(1L, null), m(2L, 3L), m(3L, 4L))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_task_146_implement_dependency_failure_returns_actionable_message() {
|
||||||
|
// 发现脏数据可由调用方记录并阻止上线
|
||||||
|
assertTrue(AdminMenuTreeBuilder.hasOrphanParent(List.of(m(1L, 8L))));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user