task-145(Java 菜单树与 Flyway): Task145Test 8 用例 RED→GREEN。
This commit is contained in:
+69
@@ -0,0 +1,69 @@
|
||||
package com.nanri.aiimage.modules.permission.service.support;
|
||||
|
||||
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-145:菜单 sort_order 排序。 */
|
||||
class Task145Test {
|
||||
|
||||
@Test
|
||||
void test_task_145_implement_normal_primary_path() {
|
||||
List<AdminMenuTreeBuilder.Node> sorted = AdminMenuTreeBuilder.sortNodes(List.of(
|
||||
node(2L, "b", 2), node(1L, "a", 1)));
|
||||
assertEquals("a", sorted.get(0).key());
|
||||
assertEquals("b", sorted.get(1).key());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_145_implement_normal_variant_input() {
|
||||
List<AdminMenuTreeBuilder.Node> sorted = AdminMenuTreeBuilder.sortNodes(List.of(
|
||||
node(2L, "z", 0), node(1L, "a", 0)));
|
||||
assertEquals("a", sorted.get(0).key(), "同序按 key 稳定排序");
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_145_implement_repeated_is_idempotent() {
|
||||
List<AdminMenuTreeBuilder.Node> nodes = List.of(node(2L, "b", 2), node(1L, "a", 1));
|
||||
assertTrue(AdminMenuTreeBuilder.sortNodes(nodes).equals(AdminMenuTreeBuilder.sortNodes(nodes)));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_145_implement_boundary_empty_input() {
|
||||
assertTrue(AdminMenuTreeBuilder.sortNodes(null).isEmpty());
|
||||
assertTrue(AdminMenuTreeBuilder.sortNodes(List.of()).isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_145_implement_boundary_single_item() {
|
||||
assertEquals(1, AdminMenuTreeBuilder.sortNodes(List.of(node(1L, "x", 0))).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_145_implement_boundary_limit_or_missing_field() {
|
||||
// 缺省 sort 按 0 处理
|
||||
List<AdminMenuTreeBuilder.Node> sorted = AdminMenuTreeBuilder.sortNodes(List.of(
|
||||
node(1L, "a", null), node(2L, "b", 1)));
|
||||
assertEquals("a", sorted.get(0).key());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_145_implement_invalid_input_rejected() {
|
||||
// 不改入参顺序
|
||||
List<AdminMenuTreeBuilder.Node> input = new java.util.ArrayList<>(List.of(node(2L, "b", 2), node(1L, "a", 1)));
|
||||
AdminMenuTreeBuilder.sortNodes(input);
|
||||
assertEquals("b", input.get(0).key());
|
||||
}
|
||||
|
||||
private AdminMenuTreeBuilder.Node node(Long id, String key, Integer sort) {
|
||||
return new AdminMenuTreeBuilder.Node(id, key, "名称", sort, "/" + key, List.of());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_task_145_implement_dependency_failure_returns_actionable_message() {
|
||||
assertEquals(2, AdminMenuTreeBuilder.sortNodes(List.of(node(1L, "a", 0), node(2L, "b", 3))).size());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user