task-275(验收反馈): 菜单权限标识/路由后台自动生成(menu_auto_/auto/ 前缀),表单移除两项输入;编辑缺省保持原值

This commit is contained in:
2026-09-06 01:57:17 +08:00
parent c3dc2a3f2f
commit 6e2e4bf8e7
10 changed files with 152 additions and 34 deletions
@@ -672,6 +672,58 @@ class PermissionMenuServiceTest {
assertThat(inserted.getValue().getMenuType()).isEqualTo("admin");
}
@Test
void createWithoutColumnKeyAndRoutePathAutoGenerates() {
PermissionMenuMapper menuMapper = mock(PermissionMenuMapper.class);
UserColumnPermissionMapper permissionMapper = mock(UserColumnPermissionMapper.class);
AdminUserMapper userMapper = mock(AdminUserMapper.class);
PermissionMenuService service = new PermissionMenuService(menuMapper, permissionMapper, userMapper);
PermissionMenuEntity adminTail = menu(9L, null, "admin", 134);
adminTail.setName("admin tail");
when(menuMapper.selectOne(any())).thenReturn(null, null, adminTail);
when(menuMapper.selectById(any())).thenReturn(adminTail);
PermissionMenuCreateRequest request = new PermissionMenuCreateRequest();
request.setName("新菜单");
request.setMenuType("admin");
// 不传 columnKey / routePath:由后台自动生成。
service.create(request);
ArgumentCaptor<PermissionMenuEntity> inserted = ArgumentCaptor.forClass(PermissionMenuEntity.class);
verify(menuMapper).insert(inserted.capture());
assertThat(inserted.getValue().getColumnKey()).startsWith("menu_auto_admin_");
assertThat(inserted.getValue().getRoutePath()).startsWith("auto/").contains(inserted.getValue().getColumnKey());
}
@Test
void updateWithoutColumnKeyAndRoutePathKeepsOriginal() {
PermissionMenuMapper menuMapper = mock(PermissionMenuMapper.class);
UserColumnPermissionMapper permissionMapper = mock(UserColumnPermissionMapper.class);
AdminUserMapper userMapper = mock(AdminUserMapper.class);
PermissionMenuService service = new PermissionMenuService(menuMapper, permissionMapper, userMapper);
PermissionMenuEntity current = menu(1L, null, "admin", 1);
current.setName("原名");
when(menuMapper.selectById(1L)).thenReturn(current);
when(menuMapper.selectOne(any())).thenReturn(null, null, current);
when(menuMapper.selectById(any())).thenReturn(current);
PermissionMenuUpdateRequest request = new PermissionMenuUpdateRequest();
request.setName("改名");
request.setMenuType("admin");
// 不传 columnKey / routePath:保持原值。
service.update(1L, request);
ArgumentCaptor<PermissionMenuEntity> updated = ArgumentCaptor.forClass(PermissionMenuEntity.class);
verify(menuMapper).updateById(updated.capture());
assertThat(updated.getValue().getColumnKey()).isEqualTo("menu-1");
assertThat(updated.getValue().getRoutePath()).isEqualTo("route-1");
assertThat(updated.getValue().getName()).isEqualTo("改名");
}
private PermissionMenuCreateRequest createRequest(Long parentId, String menuType) {
PermissionMenuCreateRequest request = new PermissionMenuCreateRequest();
request.setName("child");