package com.tourguide.modules.order.service;
|
|
import com.tourguide.config.properties.UniPushProperties;
|
import com.tourguide.modules.operation.mapper.OperationScenicSpotMapper;
|
import com.tourguide.modules.order.mapper.TourOrderMapper;
|
import com.tourguide.modules.system.service.GuideNotificationService;
|
import com.tourguide.modules.user.entity.GuideReceivingSession;
|
import com.tourguide.modules.user.mapper.GuideReceivingSessionMapper;
|
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.Test;
|
|
import java.util.Collections;
|
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.when;
|
|
class OrderLifecycleSchedulerTest {
|
private TourOrderMapper orderMapper;
|
private GuideReceivingSessionMapper sessionMapper;
|
private GuideSessionTransitionService sessionTransitionService;
|
private OrderLifecycleScheduler scheduler;
|
|
@BeforeEach
|
void setUp() {
|
orderMapper = mock(TourOrderMapper.class);
|
OperationScenicSpotMapper scenicMapper = mock(OperationScenicSpotMapper.class);
|
GuideOrderMatchingService matchingService = mock(GuideOrderMatchingService.class);
|
sessionMapper = mock(GuideReceivingSessionMapper.class);
|
sessionTransitionService = mock(GuideSessionTransitionService.class);
|
GuideNotificationService notificationService = mock(GuideNotificationService.class);
|
UniPushProperties uniPushProperties = mock(UniPushProperties.class);
|
scheduler = new OrderLifecycleScheduler(orderMapper, scenicMapper, matchingService, sessionMapper,
|
sessionTransitionService, notificationService, uniPushProperties);
|
}
|
|
@Test
|
void shouldCompleteServiceSessionWhenConfiguredLectureDurationExpires() {
|
GuideReceivingSession session = new GuideReceivingSession();
|
session.setId(18L);
|
session.setGuideId(8L);
|
session.setStatus("IN_SERVICE");
|
when(orderMapper.selectDueServiceSessionIds(any(), eq(100)))
|
.thenReturn(Collections.singletonList(18L));
|
when(sessionMapper.selectById(18L)).thenReturn(session);
|
|
scheduler.completeExpiredServiceSessions();
|
|
verify(orderMapper).selectDueServiceSessionIds(any(), eq(100));
|
verify(sessionTransitionService).completeSession(eq(session), any());
|
}
|
|
@Test
|
void shouldIgnoreSessionThatIsNoLongerInService() {
|
GuideReceivingSession session = new GuideReceivingSession();
|
session.setId(18L);
|
session.setStatus("STOPPED");
|
when(orderMapper.selectDueServiceSessionIds(any(), eq(100)))
|
.thenReturn(Collections.singletonList(18L));
|
when(sessionMapper.selectById(18L)).thenReturn(session);
|
|
scheduler.completeExpiredServiceSessions();
|
|
verify(sessionTransitionService, org.mockito.Mockito.never()).completeSession(any(), any());
|
}
|
}
|