diff --git a/server/skillhub-app/src/test/java/com/iflytek/skillhub/controller/admin/SkillReviewModerationFlowIntegrationTest.java b/server/skillhub-app/src/test/java/com/iflytek/skillhub/controller/admin/SkillReviewModerationFlowIntegrationTest.java index 8c3d7498..b9ceca9f 100644 --- a/server/skillhub-app/src/test/java/com/iflytek/skillhub/controller/admin/SkillReviewModerationFlowIntegrationTest.java +++ b/server/skillhub-app/src/test/java/com/iflytek/skillhub/controller/admin/SkillReviewModerationFlowIntegrationTest.java @@ -77,6 +77,11 @@ class SkillReviewModerationFlowIntegrationTest { .andExpect(status().isOk()) .andExpect(jsonPath("$.data.status").value("HIDDEN")); + SkillRating hidden = ratingRepository.findById(review.getId()).orElseThrow(); + assertThat(hidden.getReviewStatus()).isEqualTo(SkillReviewStatus.HIDDEN); + assertThat(hidden.getModeratedBy()).isEqualTo(ADMIN_ID); + assertThat(hidden.getModerationReason()).isEqualTo("off topic"); + mockMvc.perform(post("/api/v1/admin/skill-reviews/" + review.getId() + "/restore") .with(authentication(adminAuth())) .with(csrf())) @@ -89,6 +94,8 @@ class SkillReviewModerationFlowIntegrationTest { List actions = auditLogRepository.findAll().stream() .filter(log -> ADMIN_ID.equals(log.getActorUserId())) + .filter(log -> review.getId().equals(log.getTargetId())) + .filter(log -> "SKILL_REVIEW".equals(log.getTargetType())) .map(AuditLog::getAction) .toList(); assertThat(actions).contains("SKILL_REVIEW_HIDE", "SKILL_REVIEW_RESTORE"); diff --git a/server/skillhub-app/src/test/java/com/iflytek/skillhub/repository/SkillRatingOptimisticLockingTest.java b/server/skillhub-app/src/test/java/com/iflytek/skillhub/repository/SkillRatingOptimisticLockingTest.java index 86aa1141..e354c292 100644 --- a/server/skillhub-app/src/test/java/com/iflytek/skillhub/repository/SkillRatingOptimisticLockingTest.java +++ b/server/skillhub-app/src/test/java/com/iflytek/skillhub/repository/SkillRatingOptimisticLockingTest.java @@ -8,6 +8,7 @@ import com.iflytek.skillhub.domain.social.SkillReviewStatus; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.OptimisticLockException; +import org.hibernate.exception.ConstraintViolationException; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -78,7 +79,7 @@ class SkillRatingOptimisticLockingTest { secondManager.persist(duplicate); secondManager.flush(); secondManager.getTransaction().commit(); - }).isInstanceOf(RuntimeException.class); + }).satisfies(error -> assertThat(hasCause(error, ConstraintViolationException.class)).isTrue()); EntityManager verifier = entityManagerFactory.createEntityManager(); try {