mirror of
https://github.com/iflytek/skillhub.git
synced 2026-10-08 03:07:51 +00:00
fix(subscription): retain yank visibility context
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
This commit is contained in:
parent
1331667496
commit
126f01d75e
3 changed files with 28 additions and 3 deletions
|
|
@ -1,3 +1,3 @@
|
|||
package com.iflytek.skillhub.domain.event;
|
||||
|
||||
public record SkillVersionYankedEvent(Long skillId, Long versionId, String actorUserId) {}
|
||||
public record SkillVersionYankedEvent(Long skillId, Long versionId, String actorUserId, boolean wasPublished) {}
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ public class SkillGovernanceService {
|
|||
});
|
||||
auditLogService.record(actorUserId, "YANK_SKILL_VERSION", "SKILL_VERSION", versionId, null, clientIp, userAgent, jsonReason(reason));
|
||||
eventPublisher.publishEvent(new com.iflytek.skillhub.domain.event.SkillVersionYankedEvent(
|
||||
version.getSkillId(), versionId, actorUserId));
|
||||
version.getSkillId(), versionId, actorUserId, true));
|
||||
return saved;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ class SkillReviewSubmitServiceTest {
|
|||
assertEquals(SkillVersionStatus.PENDING_REVIEW, version.getStatus());
|
||||
assertEquals(SkillVisibility.PUBLIC, version.getRequestedVisibility());
|
||||
verify(reviewTaskRepository).save(any(ReviewTask.class));
|
||||
verify(eventPublisher, never()).publishEvent(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -186,7 +187,7 @@ class SkillReviewSubmitServiceTest {
|
|||
|
||||
ArgumentCaptor<SkillPublishedEvent> eventCaptor =
|
||||
ArgumentCaptor.forClass(SkillPublishedEvent.class);
|
||||
verify(eventPublisher).publishEvent(eventCaptor.capture());
|
||||
verify(eventPublisher, times(1)).publishEvent(eventCaptor.capture());
|
||||
SkillPublishedEvent event = eventCaptor.getValue();
|
||||
assertEquals(skillId, event.skillId());
|
||||
assertEquals(versionId, event.versionId());
|
||||
|
|
@ -258,6 +259,30 @@ class SkillReviewSubmitServiceTest {
|
|||
verify(eventPublisher, never()).publishEvent(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("should not publish event when version persistence fails")
|
||||
void shouldNotPublishEventWhenVersionPersistenceFails() {
|
||||
// Given
|
||||
Long skillId = 1L;
|
||||
Long versionId = 100L;
|
||||
String userId = "user-1";
|
||||
|
||||
Skill skill = createSkill(skillId, userId, 10L, SkillVisibility.PRIVATE);
|
||||
SkillVersion version = createVersion(versionId, skillId, SkillVersionStatus.UPLOADED);
|
||||
RuntimeException persistenceFailure = new RuntimeException("version save failed");
|
||||
|
||||
when(skillRepository.findById(skillId)).thenReturn(Optional.of(skill));
|
||||
when(skillVersionRepository.findById(versionId)).thenReturn(Optional.of(version));
|
||||
when(skillVersionRepository.save(version)).thenThrow(persistenceFailure);
|
||||
|
||||
// When/Then
|
||||
RuntimeException thrown = assertThrows(RuntimeException.class,
|
||||
() -> service.confirmPublish(skillId, versionId, userId, Map.of()));
|
||||
assertSame(persistenceFailure, thrown);
|
||||
verify(skillRepository, never()).save(any());
|
||||
verify(eventPublisher, never()).publishEvent(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("should not publish event when skill persistence fails")
|
||||
void shouldNotPublishEventWhenSkillPersistenceFails() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue