From 82a8bc62d5b9d5d607f6952329952b17eda2f0a0 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 14 九月 2026 15:44:34 +0800
Subject: [PATCH] update

---
 backend/src/test/java/com/tourguide/modules/order/service/GuideSessionTransitionServiceTest.java |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/backend/src/test/java/com/tourguide/modules/order/service/GuideSessionTransitionServiceTest.java b/backend/src/test/java/com/tourguide/modules/order/service/GuideSessionTransitionServiceTest.java
index 0ed2e08..6e10aa4 100644
--- a/backend/src/test/java/com/tourguide/modules/order/service/GuideSessionTransitionServiceTest.java
+++ b/backend/src/test/java/com/tourguide/modules/order/service/GuideSessionTransitionServiceTest.java
@@ -8,6 +8,9 @@
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import java.time.LocalDateTime;
+
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
@@ -67,6 +70,31 @@
         verify(sessionMapper, never()).releaseGroupCapacity(18L, 8L, 3);
     }
 
+    @Test
+    void shouldCompleteSessionAndDisableGuideAfterLectureEnds() {
+        GuideReceivingSession session = session("GROUP", "IN_SERVICE");
+        LocalDateTime completedAt = LocalDateTime.of(2026, 9, 14, 12, 30);
+        when(orderMapper.completeSessionOrders(8L, 18L, completedAt)).thenReturn(2);
+
+        assertThat(service.completeSession(session, completedAt)).isTrue();
+
+        verify(orderMapper).completeSessionOrders(8L, 18L, completedAt);
+        verify(sessionMapper).stopServiceSession(18L, 8L);
+        verify(realtimeStatusMapper).stopGuide(8L);
+    }
+
+    @Test
+    void shouldLeaveSessionOpenWhenNoActiveOrderCanBeCompleted() {
+        GuideReceivingSession session = session("GROUP", "IN_SERVICE");
+        LocalDateTime completedAt = LocalDateTime.of(2026, 9, 14, 12, 30);
+        when(orderMapper.completeSessionOrders(8L, 18L, completedAt)).thenReturn(0);
+
+        assertThat(service.completeSession(session, completedAt)).isFalse();
+
+        verify(sessionMapper, never()).stopServiceSession(18L, 8L);
+        verify(realtimeStatusMapper, never()).stopGuide(8L);
+    }
+
     private TourOrder cancelledOrder(Long guideId, Long sessionId, int peopleCount) {
         TourOrder order = new TourOrder();
         order.setGuideId(guideId);

--
Gitblit v1.7.1