merge: validate PR 793 archived interaction

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
This commit is contained in:
XiaoSeS 2026-09-02 02:49:23 +08:00
commit 30b79bccef
2 changed files with 31 additions and 1 deletions

View file

@ -242,7 +242,8 @@ public class SkillQueryService {
skill.getUpdatedAt(),
canManageRestrictedSkill(skill, currentUserId, userNsRoles),
canSubmitPromotion(namespace, skill, publishedVersion, currentUserId, userNsRoles),
headlineVersion == null || "PUBLISHED".equals(headlineVersion.status()),
skill.getStatus() == SkillStatus.ACTIVE
&& (headlineVersion == null || "PUBLISHED".equals(headlineVersion.status())),
currentUserId == null || !Objects.equals(skill.getOwnerId(), currentUserId),
headlineVersion,
publishedVersion,

View file

@ -1212,6 +1212,35 @@ class SkillQueryServiceTest {
assertTrue(result.canInteract());
}
@Test
void testGetSkillDetail_ShouldDisableInteractionForArchivedSkill() throws Exception {
String namespaceSlug = "test-ns";
String skillSlug = "test-skill";
String ownerId = "owner-1";
Map<Long, NamespaceRole> userNsRoles = Map.of();
Namespace namespace = new Namespace(namespaceSlug, "Test NS", ownerId);
setId(namespace, 1L);
Skill skill = new Skill(1L, skillSlug, ownerId, SkillVisibility.PUBLIC);
setId(skill, 1L);
skill.setStatus(SkillStatus.ARCHIVED);
skill.setLatestVersionId(11L);
SkillVersion published = new SkillVersion(1L, "1.0.0", ownerId);
setId(published, 11L);
published.setStatus(SkillVersionStatus.PUBLISHED);
when(namespaceRepository.findBySlug(namespaceSlug)).thenReturn(Optional.of(namespace));
when(skillRepository.findByNamespaceIdAndSlug(1L, skillSlug)).thenReturn(List.of(skill));
when(skillVersionRepository.findById(11L)).thenReturn(Optional.of(published));
SkillQueryService.SkillDetailDTO result = service.getSkillDetail(namespaceSlug, skillSlug, ownerId, userNsRoles);
assertNotNull(result.headlineVersion());
assertEquals("PUBLISHED", result.headlineVersion().status());
assertFalse(result.canInteract());
}
@Test
void testGetSkillDetail_ShouldIncludeRejectedOwnerPreviewComment() throws Exception {
String namespaceSlug = "test-ns";