package com.tourguide.modules.feedback.service; import com.tourguide.modules.feedback.dto.UserFeedbackResponse; import com.tourguide.modules.feedback.entity.UserFeedback; import com.tourguide.modules.feedback.mapper.UserFeedbackMapper; import com.tourguide.modules.user.entity.GuideUser; import com.tourguide.modules.user.entity.MiniUser; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; class UserFeedbackServiceTest { @Test void shouldCreateVisitorFeedbackWithUserSnapshot() { UserFeedbackMapper feedbackMapper = mock(UserFeedbackMapper.class); UserFeedbackService feedbackService = new UserFeedbackService(feedbackMapper); MiniUser user = new MiniUser(); user.setId(8L); user.setUsername("visitor_8"); user.setNickname("游客昵称"); user.setRealName("张三"); user.setMobile("13800138000"); UserFeedbackResponse response = feedbackService.createVisitor(user, " 反馈内容 "); ArgumentCaptor captor = ArgumentCaptor.forClass(UserFeedback.class); verify(feedbackMapper).insert(captor.capture()); UserFeedback feedback = captor.getValue(); assertThat(feedback.getFeedbackNo()).startsWith("FB").hasSize(24); assertThat(feedback.getFeedbackType()).isEqualTo("VISITOR"); assertThat(feedback.getUserId()).isEqualTo(8L); assertThat(feedback.getUserName()).isEqualTo("张三"); assertThat(feedback.getUserMobile()).isEqualTo("13800138000"); assertThat(feedback.getContent()).isEqualTo("反馈内容"); assertThat(feedback.getStatus()).isZero(); assertThat(response.getFeedbackNo()).isEqualTo(feedback.getFeedbackNo()); } @Test void shouldCreateGuideFeedbackWithGuideSnapshot() { UserFeedbackMapper feedbackMapper = mock(UserFeedbackMapper.class); UserFeedbackService feedbackService = new UserFeedbackService(feedbackMapper); GuideUser guide = new GuideUser(); guide.setId(12L); guide.setUsername("guide_12"); guide.setRealName("李导游"); guide.setMobile("13900139000"); UserFeedbackResponse response = feedbackService.createGuide(guide, " 导游反馈 "); ArgumentCaptor captor = ArgumentCaptor.forClass(UserFeedback.class); verify(feedbackMapper).insert(captor.capture()); UserFeedback feedback = captor.getValue(); assertThat(feedback.getFeedbackNo()).startsWith("FB").hasSize(24); assertThat(feedback.getFeedbackType()).isEqualTo("GUIDE"); assertThat(feedback.getUserId()).isEqualTo(12L); assertThat(feedback.getUserName()).isEqualTo("李导游"); assertThat(feedback.getUserMobile()).isEqualTo("13900139000"); assertThat(feedback.getContent()).isEqualTo("导游反馈"); assertThat(feedback.getStatus()).isZero(); assertThat(response.getFeedbackNo()).isEqualTo(feedback.getFeedbackNo()); } }