mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 10:37:41 +08:00 
			
		
		
		
	支付宝 PC 网站 Client 单元测试
This commit is contained in:
		| @ -0,0 +1,114 @@ | |||||||
|  | package cn.iocoder.yudao.framework.pay.core.client.impl.alipay; | ||||||
|  |  | ||||||
|  | import cn.hutool.http.Method; | ||||||
|  | import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO; | ||||||
|  | import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedReqDTO; | ||||||
|  | import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderDisplayModeEnum; | ||||||
|  | import com.alipay.api.AlipayApiException; | ||||||
|  | import com.alipay.api.request.AlipayTradePagePayRequest; | ||||||
|  | import com.alipay.api.response.AlipayTradePagePayResponse; | ||||||
|  | import org.junit.jupiter.api.BeforeEach; | ||||||
|  | import org.junit.jupiter.api.DisplayName; | ||||||
|  | import org.junit.jupiter.api.Test; | ||||||
|  | import org.mockito.ArgumentMatcher; | ||||||
|  | import org.mockito.InjectMocks; | ||||||
|  |  | ||||||
|  | import static cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderStatusRespEnum.CLOSED; | ||||||
|  | import static cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderStatusRespEnum.WAITING; | ||||||
|  | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | ||||||
|  | import static org.junit.jupiter.api.Assertions.assertEquals; | ||||||
|  | import static org.junit.jupiter.api.Assertions.assertSame; | ||||||
|  | import static org.mockito.ArgumentMatchers.argThat; | ||||||
|  | import static org.mockito.ArgumentMatchers.eq; | ||||||
|  | import static org.mockito.Mockito.when; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author jason | ||||||
|  |  */ | ||||||
|  | public class AlipayPcPayClientTest extends AbstractAlipayClientTest { | ||||||
|  |  | ||||||
|  |     @InjectMocks | ||||||
|  |     private AlipayPcPayClient client = new AlipayPcPayClient(randomLongId(), config); | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @BeforeEach | ||||||
|  |     public void setUp() { | ||||||
|  |         setClient(client); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     @DisplayName("支付宝 PC 网站支付 URL Display Mode 下单成功") | ||||||
|  |     public void test_unified_order_url_display_mode_success() throws AlipayApiException { | ||||||
|  |         // 准备返回对象 | ||||||
|  |         String notifyUrl = randomURL(); | ||||||
|  |         Integer price = randomInteger(); | ||||||
|  |         AlipayTradePagePayResponse response = randomPojo(AlipayTradePagePayResponse.class, o -> { | ||||||
|  |             o.setSubCode(""); | ||||||
|  |         }); | ||||||
|  |         // mock | ||||||
|  |         when(defaultAlipayClient.pageExecute(argThat((ArgumentMatcher<AlipayTradePagePayRequest>) request -> true), | ||||||
|  |                 eq(Method.GET.name()))).thenReturn(response); | ||||||
|  |         // 准备请求参数 | ||||||
|  |         String outTradeNo = randomString(); | ||||||
|  |         PayOrderUnifiedReqDTO reqDTO = buildOrderUnifiedReqDTO(notifyUrl, outTradeNo, price); | ||||||
|  |         // 设置  displayMode 为 null. | ||||||
|  |         reqDTO.setDisplayMode(null); | ||||||
|  |  | ||||||
|  |         PayOrderRespDTO resp = client.unifiedOrder(reqDTO); | ||||||
|  |         // 断言 | ||||||
|  |         assertEquals(WAITING.getStatus(), resp.getStatus()); | ||||||
|  |         assertEquals(PayOrderDisplayModeEnum.URL.getMode(), resp.getDisplayMode()); | ||||||
|  |         assertEquals(outTradeNo, resp.getOutTradeNo()); | ||||||
|  |         assertSame(response, resp.getRawData()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     @DisplayName("支付宝 PC 网站支付 FORM Display Mode 下单成功") | ||||||
|  |     public void test_unified_order_form_display_mode_success() throws AlipayApiException { | ||||||
|  |         // 准备返回对象 | ||||||
|  |         String notifyUrl = randomURL(); | ||||||
|  |         Integer price = randomInteger(); | ||||||
|  |         AlipayTradePagePayResponse response = randomPojo(AlipayTradePagePayResponse.class, o -> { | ||||||
|  |             o.setSubCode(""); | ||||||
|  |         }); | ||||||
|  |         // mock | ||||||
|  |         when(defaultAlipayClient.pageExecute(argThat((ArgumentMatcher<AlipayTradePagePayRequest>) request -> true), | ||||||
|  |                 eq(Method.POST.name()))).thenReturn(response); | ||||||
|  |         // 准备请求参数 | ||||||
|  |         String outTradeNo = randomString(); | ||||||
|  |         PayOrderUnifiedReqDTO reqDTO = buildOrderUnifiedReqDTO(notifyUrl, outTradeNo, price); | ||||||
|  |         reqDTO.setDisplayMode(PayOrderDisplayModeEnum.FORM.getMode()); | ||||||
|  |  | ||||||
|  |         PayOrderRespDTO resp = client.unifiedOrder(reqDTO); | ||||||
|  |         // 断言 | ||||||
|  |         assertEquals(WAITING.getStatus(), resp.getStatus()); | ||||||
|  |         assertEquals(PayOrderDisplayModeEnum.FORM.getMode(), resp.getDisplayMode()); | ||||||
|  |         assertEquals(outTradeNo, resp.getOutTradeNo()); | ||||||
|  |         assertSame(response, resp.getRawData()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     @DisplayName("支付宝 PC 网站支付,渠道返回失败") | ||||||
|  |     public void test_unified_order_channel_failed() throws AlipayApiException { | ||||||
|  |         // 准备响应对象 | ||||||
|  |         String subCode = randomString(); | ||||||
|  |         String subMsg = randomString(); | ||||||
|  |         AlipayTradePagePayResponse response = randomPojo(AlipayTradePagePayResponse.class, o -> { | ||||||
|  |             o.setSubCode(subCode); | ||||||
|  |             o.setSubMsg(subMsg); | ||||||
|  |         }); | ||||||
|  |         // mock | ||||||
|  |         when(defaultAlipayClient.pageExecute(argThat((ArgumentMatcher<AlipayTradePagePayRequest>) request -> true), | ||||||
|  |                 eq(Method.GET.name()))).thenReturn(response); | ||||||
|  |         // 准备请求参数 | ||||||
|  |         PayOrderUnifiedReqDTO reqDTO = buildOrderUnifiedReqDTO(randomURL(), randomString(), randomInteger()); | ||||||
|  |         reqDTO.setDisplayMode(PayOrderDisplayModeEnum.URL.getMode()); | ||||||
|  |  | ||||||
|  |         PayOrderRespDTO resp = client.unifiedOrder(reqDTO); | ||||||
|  |         // 断言 | ||||||
|  |         assertEquals(CLOSED.getStatus(), resp.getStatus()); | ||||||
|  |         assertEquals(subCode, resp.getChannelErrorCode()); | ||||||
|  |         assertEquals(subMsg, resp.getChannelErrorMsg()); | ||||||
|  |         assertSame(response, resp.getRawData()); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 jason
					jason