| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- package com.water.revenue;
-
- import com.water.revenue.entity.FaqItem;
- import com.water.revenue.entity.IntentRule;
- import com.water.revenue.entity.WxPayOrder;
- import com.water.revenue.mapper.FaqItemMapper;
- import com.water.revenue.mapper.IntentRuleMapper;
- import com.water.revenue.mapper.WxPayOrderMapper;
- import com.water.revenue.service.wxhall.FaqService;
- import com.water.revenue.service.wxhall.IntentService;
- import com.water.revenue.service.wxhall.WxPayService;
- import org.junit.jupiter.api.Test;
- import org.junit.jupiter.api.extension.ExtendWith;
- import org.mockito.InjectMocks;
- import org.mockito.Mock;
- import org.mockito.junit.jupiter.MockitoExtension;
-
- import java.math.BigDecimal;
- import java.util.List;
- import java.util.Map;
-
- import static org.junit.jupiter.api.Assertions.*;
- import static org.mockito.ArgumentMatchers.any;
- import static org.mockito.Mockito.*;
-
- @ExtendWith(MockitoExtension.class)
- class WxHallServiceTest {
-
- @Mock private WxPayOrderMapper wxPayOrderMapper;
- @Mock private FaqItemMapper faqItemMapper;
- @Mock private IntentRuleMapper intentRuleMapper;
-
- @InjectMocks private WxPayService wxPayService;
- @InjectMocks private FaqService faqService;
- @InjectMocks private IntentService intentService;
-
- @Test
- void testUnifiedOrder() {
- when(wxPayOrderMapper.insert(any())).thenReturn(1);
- when(wxPayOrderMapper.updateById(any())).thenReturn(1);
-
- Map<String, Object> result = wxPayService.unifiedOrder(
- "openid123", "C001", "2024-01", new BigDecimal("50.00"), null);
-
- assertNotNull(result.get("outTradeNo"));
- assertEquals(5000, result.get("totalFee"));
- assertNotNull(result.get("prepayId"));
- verify(wxPayOrderMapper).insert(any(WxPayOrder.class));
- }
-
- @Test
- void testPayNotify() {
- WxPayOrder order = new WxPayOrder();
- order.setOutTradeNo("WXPAY20240101000001");
- order.setStatus("pending");
- when(wxPayOrderMapper.selectByOutTradeNo(any())).thenReturn(order);
- when(wxPayOrderMapper.updateById(any())).thenReturn(1);
-
- Map<String, String> xmlData = Map.of(
- "out_trade_no", "WXPAY20240101000001",
- "transaction_id", "TX123",
- "result_code", "SUCCESS",
- "sign", "test_sign"
- );
-
- Map<String, Object> result = wxPayService.payNotify(xmlData);
- assertEquals("SUCCESS", result.get("return_code"));
- verify(wxPayOrderMapper).updateById(any(WxPayOrder.class));
- }
-
- @Test
- void testRefund() {
- WxPayOrder order = new WxPayOrder();
- order.setOutTradeNo("WXPAY001");
- order.setStatus("success");
- order.setAmount(new BigDecimal("50.00"));
- when(wxPayOrderMapper.selectByOutTradeNo(any())).thenReturn(order);
- when(wxPayOrderMapper.updateById(any())).thenReturn(1);
-
- Map<String, Object> result = wxPayService.refund("WXPAY001", new BigDecimal("30.00"), "用户申请");
- assertEquals("refunded", result.get("status"));
- assertEquals(new BigDecimal("30.00"), result.get("refundAmount"));
- }
-
- @Test
- void testSearchFaq() {
- FaqItem faq = new FaqItem();
- faq.setId(1L);
- faq.setQuestion("如何查询水费?");
- faq.setAnswer("通过公众号查询");
- when(faqItemMapper.selectList(any())).thenReturn(List.of(faq));
-
- List<FaqItem> results = faqService.searchFaq("水费");
- assertFalse(results.isEmpty());
- assertEquals(1, results.size());
- }
-
- @Test
- void testGetHotFaqs() {
- FaqItem faq = new FaqItem();
- faq.setHitCount(100);
- when(faqItemMapper.selectList(any())).thenReturn(List.of(faq));
-
- List<FaqItem> results = faqService.getHotFaqs(5);
- assertFalse(results.isEmpty());
- }
-
- @Test
- void testIntentResolve() {
- IntentRule rule = new IntentRule();
- rule.setId(1L);
- rule.setPattern(".*查.*账单.*");
- rule.setIntentType("QUERY_BILL");
- rule.setResponse("正在查询...");
- rule.setHitCount(0);
- when(intentRuleMapper.selectList(any())).thenReturn(List.of(rule));
- when(intentRuleMapper.updateById(any())).thenReturn(1);
-
- Map<String, Object> result = intentService.resolve("我想查账单");
- assertNotNull(result);
- assertEquals("QUERY_BILL", result.get("intentType"));
- }
-
- @Test
- void testIntentResolveNoMatch() {
- when(intentRuleMapper.selectList(any())).thenReturn(List.of());
-
- Map<String, Object> result = intentService.resolve("今天天气怎么样");
- assertNotNull(result);
- assertEquals("UNKNOWN", result.get("intentType"));
- }
-
- @Test
- void testCreateFaq() {
- FaqItem faq = new FaqItem();
- faq.setQuestion("新问题");
- faq.setAnswer("新答案");
- faq.setCategory("其他");
- when(faqItemMapper.insert(any())).thenReturn(1);
-
- FaqItem result = faqService.createFaq(faq);
- assertNotNull(result);
- assertEquals("新问题", result.getQuestion());
- verify(faqItemMapper).insert(any(FaqItem.class));
- }
- }
|