1.0
longz
2026-06-24 e45e74e5ae207f7642be9a88ed99b593de89fb3b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package com.sinata.appointment.service;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.sinata.appointment.entity.AppointmentOrder;
import com.sinata.appointment.entity.MpUser;
import com.sinata.appointment.integration.WechatMiniGateway;
import com.sinata.appointment.mapper.ApprovalTaskMapper;
import com.sinata.appointment.mapper.AppointmentVisitorMapper;
import com.sinata.appointment.mapper.BizVisitReasonMapper;
import com.sinata.appointment.mapper.MpUserMapper;
import java.time.LocalDate;
import java.util.Map;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.junit.jupiter.api.extension.ExtendWith;
 
@ExtendWith(MockitoExtension.class)
class IntegrationWechatServiceTest {
 
    @Mock
    private WechatMiniGateway wechatMiniGateway;
 
    @Mock
    private MpUserMapper mpUserMapper;
 
    @Mock
    private ApprovalTaskMapper approvalTaskMapper;
 
    @Mock
    private AppointmentVisitorMapper appointmentVisitorMapper;
 
    @Mock
    private BizVisitReasonMapper bizVisitReasonMapper;
 
    private IntegrationWechatService integrationWechatService;
 
    @BeforeEach
    void setUp() {
        integrationWechatService =
                new IntegrationWechatService(
                        wechatMiniGateway,
                        mpUserMapper,
                        approvalTaskMapper,
                        appointmentVisitorMapper,
                        bizVisitReasonMapper);
    }
 
    @Test
    void shouldSendApprovalResultSubscribeMessage() {
        AppointmentOrder order = new AppointmentOrder();
        order.setSubmitterId(2L);
        order.setOrderNo("YY20260424001");
        order.setVisitStartDate(LocalDate.of(2026, 4, 24));
        order.setVisitReasonCode("BUSINESS");
        order.setVisitTimeMode("SINGLE");
        order.setVisitTimeSlot("AM");
 
        MpUser submitter = new MpUser();
        submitter.setId(2L);
        submitter.setOpenId("openid-123");
        submitter.setNickName("张三");
 
        when(mpUserMapper.selectOne(any(LambdaQueryWrapper.class))).thenReturn(submitter);
 
        integrationWechatService.notifyApprovalFinalResult(order, true);
 
        @SuppressWarnings("unchecked")
        ArgumentCaptor<Map<String, String>> dataCaptor = ArgumentCaptor.forClass(Map.class);
        verify(wechatMiniGateway)
                .sendSubscribeMessage(
                        eq("openid-123"),
                        eq("rIJpfN51_q818RTpJAqTe5ssTwWCHnxDM5rpq64uuKM"),
                        eq("pages/record/index"),
                        dataCaptor.capture());
 
        Map<String, String> payload = dataCaptor.getValue();
        assertEquals("通过", payload.get("phrase4"));
        assertEquals("2026-04-24 09:00", payload.get("time2"));
        assertEquals("预约审核通过", payload.get("thing5"));
    }
 
    @Test
    void shouldSkipWhenSubmitterHasNoOpenId() {
        AppointmentOrder order = new AppointmentOrder();
        order.setSubmitterId(2L);
        order.setOrderNo("YY20260424001");
 
        MpUser submitter = new MpUser();
        submitter.setId(2L);
        submitter.setOpenId("");
 
        when(mpUserMapper.selectOne(any(LambdaQueryWrapper.class))).thenReturn(submitter);
 
        integrationWechatService.notifyApprovalFinalResult(order, false);
 
        verify(wechatMiniGateway, never())
                .sendSubscribeMessage(any(), any(), any(), any());
    }
}