|
@@ -59,6 +59,8 @@ class LinePayOfflineServiceTest {
|
|
|
facts = mock(LinePayFactService.class);
|
|
facts = mock(LinePayFactService.class);
|
|
|
service = new LinePayOfflineService(orders, users, stores, credentials, payments,
|
|
service = new LinePayOfflineService(orders, users, stores, credentials, payments,
|
|
|
client, facts);
|
|
client, facts);
|
|
|
|
|
+ org.springframework.test.util.ReflectionTestUtils.setField(service, "refundService",
|
|
|
|
|
+ mock(com.ruoyi.system.service.IPosOrderLineRefundService.class));
|
|
|
when(users.getOne(any(Wrapper.class))).thenReturn(merchant());
|
|
when(users.getOne(any(Wrapper.class))).thenReturn(merchant());
|
|
|
when(orders.getOne(any(Wrapper.class))).thenReturn(order());
|
|
when(orders.getOne(any(Wrapper.class))).thenReturn(order());
|
|
|
when(orders.count(any(Wrapper.class))).thenReturn(1L);
|
|
when(orders.count(any(Wrapper.class))).thenReturn(1L);
|
|
@@ -69,6 +71,43 @@ class LinePayOfflineServiceTest {
|
|
|
eq("TWD"), eq("OFFLINE"), any())).thenReturn(intent());
|
|
eq("TWD"), eq("OFFLINE"), any())).thenReturn(intent());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @ParameterizedTest
|
|
|
|
|
+ @ValueSource(strings = {"CREATED", "PROCESSING", "UNKNOWN", "RETRY_WAIT", "FAILED", "MANUAL_REVIEW", "REFUNDED"})
|
|
|
|
|
+ void paidAttemptIncludesCancelledOrderAndRefundFacts(String refundStatus) {
|
|
|
|
|
+ var refunds = mock(com.ruoyi.system.service.IPosOrderLineRefundService.class);
|
|
|
|
|
+ org.springframework.test.util.ReflectionTestUtils.setField(service, "refundService", refunds);
|
|
|
|
|
+ PosOrder current = order(); current.setState(4L);
|
|
|
|
|
+ current.setPayStatus("REFUNDED".equals(refundStatus) ? 2L : 1L);
|
|
|
|
|
+ when(orders.getOne(any(Wrapper.class))).thenReturn(current);
|
|
|
|
|
+ PosOrderLinePayment paid = intent(); paid.setStatus("PAID"); paid.setPaymentMode("OFFLINE");
|
|
|
|
|
+ when(payments.getByDdId("DD-100")).thenReturn(java.util.List.of(paid));
|
|
|
|
|
+ var refund = new com.ruoyi.system.domain.PosOrderLineRefund(); refund.setStatus(refundStatus);
|
|
|
|
|
+ when(refunds.getByPaymentId(paid.getId())).thenReturn(refund);
|
|
|
|
|
+ var result = service.status(101L, "DD-100");
|
|
|
|
|
+ assertEquals("PAID", result.getStatus());
|
|
|
|
|
+ assertEquals(4L, result.getOrderState());
|
|
|
|
|
+ assertEquals(current.getPayStatus(), result.getOrderPayStatus());
|
|
|
|
|
+ assertEquals(refundStatus, result.getRefundStatus());
|
|
|
|
|
+ verify(refunds).getByPaymentId(paid.getId());
|
|
|
|
|
+ org.mockito.Mockito.verifyNoMoreInteractions(refunds);
|
|
|
|
|
+ org.mockito.Mockito.verifyNoInteractions(client, facts, credentials);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void noOfflineAttemptKeepsOrderPaymentFactAndDoesNotQueryRefund() {
|
|
|
|
|
+ var refunds = mock(com.ruoyi.system.service.IPosOrderLineRefundService.class);
|
|
|
|
|
+ org.springframework.test.util.ReflectionTestUtils.setField(service, "refundService", refunds);
|
|
|
|
|
+ PosOrder current = order(); current.setPayStatus(1L); current.setState(1L);
|
|
|
|
|
+ when(orders.getOne(any(Wrapper.class))).thenReturn(current);
|
|
|
|
|
+ when(payments.getByDdId("DD-100")).thenReturn(java.util.List.of());
|
|
|
|
|
+ var result = service.status(101L, "DD-100");
|
|
|
|
|
+ assertEquals("NOT_STARTED", result.getStatus());
|
|
|
|
|
+ assertEquals(1L, result.getOrderPayStatus());
|
|
|
|
|
+ assertEquals(1L, result.getOrderState());
|
|
|
|
|
+ org.junit.jupiter.api.Assertions.assertNull(result.getRefundStatus());
|
|
|
|
|
+ org.mockito.Mockito.verifyNoInteractions(refunds, client, facts);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Test
|
|
@Test
|
|
|
void noOfflineAttemptIsNormalNotStartedWithoutGatewayOrWrites() {
|
|
void noOfflineAttemptIsNormalNotStartedWithoutGatewayOrWrites() {
|
|
|
when(payments.getByDdId("DD-100")).thenReturn(java.util.List.of());
|
|
when(payments.getByDdId("DD-100")).thenReturn(java.util.List.of());
|