diff --git a/services/src/main/java/io/meeds/task/mcp/TaskMcpTool.java b/services/src/main/java/io/meeds/task/mcp/TaskMcpTool.java index db9c55aef..fbc22730e 100644 --- a/services/src/main/java/io/meeds/task/mcp/TaskMcpTool.java +++ b/services/src/main/java/io/meeds/task/mcp/TaskMcpTool.java @@ -1440,8 +1440,8 @@ private ProjectModel toProjectModel(ProjectDto project) { Space space = getProjectSpace(project); return new ProjectModel(project.getId(), project.getName(), - getUrl(project), transformHtmlContent(project.getDescription(), aclIdentity, locale), + getUrl(project), getProjectStatuses(project.getId()), getProjectLabels(project.getId()), space == null ? null : space.getSpaceId(), diff --git a/services/src/test/java/io/meeds/task/mcp/TaskMcpToolTest.java b/services/src/test/java/io/meeds/task/mcp/TaskMcpToolTest.java index d2afd7d44..bb795034c 100644 --- a/services/src/test/java/io/meeds/task/mcp/TaskMcpToolTest.java +++ b/services/src/test/java/io/meeds/task/mcp/TaskMcpToolTest.java @@ -1427,6 +1427,31 @@ public void listProjectsShouldUseProjectCountAndReturnCollection() throws Except verify(projectService).countProjects(any(), eq(null)); } + /** + * A project carries its description in the description and its permanent + * link in the url, not the one in the other's place. + * Mutant: the description and the link are passed in each other's position. + */ + @Test + public void getProjectByIdShouldKeepTheDescriptionAndTheUrlEachInItsOwnField() throws Exception { // NOSONAR + ProjectDto project = mock(ProjectDto.class); + + when(projectService.getProject(PROJECT_ID)).thenReturn(project); + when(project.canView(currentIdentity)).thenReturn(true); + when(project.getId()).thenReturn(PROJECT_ID); + when(project.getName()).thenReturn(PROJECT_NAME); + when(project.getDescription()).thenReturn("Reworks the Shortcuts portlet"); + when(project.getManager()).thenReturn(Collections.emptySet()); + when(statusService.getStatuses(PROJECT_ID)).thenReturn(Collections.emptyList()); + when(labelService.findLabelsByProject(PROJECT_ID, currentIdentity, 0, 100)).thenReturn(Collections.emptyList()); + when(permanentLinkService.getLink(any())).thenReturn("/project-link"); + + ProjectModel model = runWithDateFormatMockResult(() -> tool.getProjectById(PROJECT_ID)); + + assertTrue(model.getDescription(), model.getDescription().contains("Reworks the Shortcuts portlet")); + assertTrue(model.getUrl(), model.getUrl().endsWith("/project-link")); + } + /** * In a run limited to a space, the query gets the user's roles of that space * group and nothing of the user's other memberships, and only the projects