From 4f6f15b818704079ff2e4e4719b798f48d68a335 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 11 九月 2026 13:52:19 +0800
Subject: [PATCH] update

---
 backend/src/test/java/com/tourguide/modules/review/service/OrderReviewServiceTest.java |   62 ++++++++++++++++++++++++++++++
 1 files changed, 61 insertions(+), 1 deletions(-)

diff --git a/backend/src/test/java/com/tourguide/modules/review/service/OrderReviewServiceTest.java b/backend/src/test/java/com/tourguide/modules/review/service/OrderReviewServiceTest.java
index bd650ba..b34c258 100644
--- a/backend/src/test/java/com/tourguide/modules/review/service/OrderReviewServiceTest.java
+++ b/backend/src/test/java/com/tourguide/modules/review/service/OrderReviewServiceTest.java
@@ -4,11 +4,18 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.MybatisConfiguration;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.ibatis.builder.MapperBuilderAssistant;
 import com.tourguide.modules.order.mapper.TourOrderMapper;
+import com.tourguide.modules.order.domain.OrderStatus;
+import com.tourguide.modules.order.entity.TourOrder;
+import com.tourguide.modules.review.dto.OrderReviewCreateRequest;
+import com.tourguide.modules.review.dto.GuideRatingItemResponse;
 import com.tourguide.modules.review.dto.GuideRatingResponse;
 import com.tourguide.modules.review.entity.OrderReview;
 import com.tourguide.modules.review.mapper.OrderReviewMapper;
+import com.tourguide.modules.review.dto.OrderReviewResponse;
+import com.tourguide.modules.system.service.GuideNotificationService;
 import com.tourguide.modules.user.entity.GuideUser;
 import com.tourguide.modules.user.mapper.GuideUserMapper;
 import com.tourguide.modules.user.service.GuideAutoDisableService;
@@ -55,6 +62,7 @@
         review.setGuideId(12L);
         review.setScore(new BigDecimal("5.0"));
         review.setContent("讲解专业");
+        review.setImageUrls("[\"/uploads/review-images/example.jpg\"]");
         review.setReviewedAt(LocalDateTime.of(2026, 7, 29, 10, 30));
         review.setStatus(1);
 
@@ -75,7 +83,59 @@
         assertThat(response.getRows()).hasSize(1);
         assertThat(response.getRows().get(0).getDateText()).isEqualTo("2026年7月29日");
         assertThat(response.getRows().get(0).getComment()).isEqualTo("讲解专业");
-        assertThat(response.getRows().get(0).getImages()).isEmpty();
+        assertThat(response.getRows().get(0).getImages())
+                .containsExactly("/uploads/review-images/example.jpg");
+    }
+
+    @Test
+    void reviewResponsesShouldParseLegacyImageFormats() {
+        OrderReview review = new OrderReview();
+        review.setImageUrls("/uploads/review-images/one.jpg,/uploads/review-images/two.jpg");
+
+        assertThat(new GuideRatingItemResponse(review).getImages())
+                .containsExactly("/uploads/review-images/one.jpg", "/uploads/review-images/two.jpg");
+        assertThat(new OrderReviewResponse(review).getImages())
+                .containsExactly("/uploads/review-images/one.jpg", "/uploads/review-images/two.jpg");
+    }
+
+    @Test
+    void createShouldNotifyGuideAfterReviewIsSaved() {
+        OrderReviewMapper reviewMapper = mock(OrderReviewMapper.class);
+        TourOrderMapper orderMapper = mock(TourOrderMapper.class);
+        GuideUserMapper guideUserMapper = mock(GuideUserMapper.class);
+        GuideNotificationService notificationService = mock(GuideNotificationService.class);
+        OrderReviewService reviewService = new OrderReviewService(
+                reviewMapper, orderMapper, guideUserMapper, mock(GuideAutoDisableService.class),
+                new ObjectMapper(), notificationService);
+
+        TourOrder order = new TourOrder();
+        order.setId(99L);
+        order.setOrderNo("ORDER-99");
+        order.setVisitorId(7L);
+        order.setGuideId(8L);
+        order.setStatus(OrderStatus.COMPLETED.getCode());
+        when(orderMapper.selectById(99L)).thenReturn(order);
+        when(reviewMapper.countByOrderId(99L)).thenReturn(0L);
+
+        GuideUser guide = new GuideUser();
+        guide.setId(8L);
+        guide.setStatus(1);
+        when(guideUserMapper.selectById(8L)).thenReturn(guide);
+        when(reviewMapper.selectAverageScore(8L)).thenReturn(new BigDecimal("5.00"));
+
+        OrderReviewCreateRequest request = new OrderReviewCreateRequest();
+        request.setOrderId(99L);
+        request.setScore(new BigDecimal("5.00"));
+        request.setContent("服务很好");
+        request.setImages(Collections.singletonList("/uploads/review-images/example.jpg"));
+
+        reviewService.create(7L, request);
+
+        ArgumentCaptor<OrderReview> reviewCaptor = ArgumentCaptor.forClass(OrderReview.class);
+        verify(reviewMapper).insert(reviewCaptor.capture());
+        assertThat(reviewCaptor.getValue().getImageUrls())
+                .isEqualTo("[\"/uploads/review-images/example.jpg\"]");
+        verify(notificationService).notifyOrderReviewed(order);
     }
 
     @Test

--
Gitblit v1.7.1