|
|
@@ -69,6 +69,47 @@ class LinePayOfflineServiceTest {
|
|
|
eq("TWD"), eq("OFFLINE"), any())).thenReturn(intent());
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ void noOfflineAttemptIsNormalNotStartedWithoutGatewayOrWrites() {
|
|
|
+ when(payments.getByDdId("DD-100")).thenReturn(java.util.List.of());
|
|
|
+ try (var messages = mockStatic(MessageUtils.class, call -> call.getArgument(0))) {
|
|
|
+ LinePayOfflineResult result = service.status(101L, " DD-100 ");
|
|
|
+ assertEquals("DD-100", result.getDdId());
|
|
|
+ assertEquals("NOT_STARTED", result.getStatus());
|
|
|
+ org.junit.jupiter.api.Assertions.assertNull(result.getPaymentId());
|
|
|
+ org.junit.jupiter.api.Assertions.assertNull(result.getTransactionId());
|
|
|
+ org.mockito.Mockito.verifyNoInteractions(client, facts, credentials);
|
|
|
+ verify(payments).getByDdId("DD-100");
|
|
|
+ org.mockito.Mockito.verifyNoMoreInteractions(payments);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void onlineAttemptIsNotExposedAsOfflinePayment() {
|
|
|
+ PosOrderLinePayment online = intent();
|
|
|
+ online.setPaymentMode("ONLINE");
|
|
|
+ online.setStatus("PAID");
|
|
|
+ when(payments.getByDdId("DD-100")).thenReturn(java.util.List.of(online));
|
|
|
+ try (var messages = mockStatic(MessageUtils.class, call -> call.getArgument(0))) {
|
|
|
+ LinePayOfflineResult result = service.status(101L, "DD-100");
|
|
|
+ assertEquals("NOT_STARTED", result.getStatus());
|
|
|
+ org.junit.jupiter.api.Assertions.assertNull(result.getLineOrderId());
|
|
|
+ org.mockito.Mockito.verifyNoInteractions(client, facts, credentials);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void existingOfflineAttemptStillReturnsItsActualStatus() {
|
|
|
+ PosOrderLinePayment offline = intent();
|
|
|
+ offline.setPaymentMode("OFFLINE");
|
|
|
+ offline.setStatus("REQUEST_UNKNOWN");
|
|
|
+ when(payments.getByDdId("DD-100")).thenReturn(java.util.List.of(offline));
|
|
|
+ LinePayOfflineResult result = service.status(101L, "DD-100");
|
|
|
+ assertEquals("PROCESSING", result.getStatus());
|
|
|
+ assertEquals(offline.getId(), result.getPaymentId());
|
|
|
+ org.mockito.Mockito.verifyNoInteractions(client, facts, credentials);
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
void successfulPayRequiresStrictFactsAndPersistsProvider() throws Exception {
|
|
|
JSONObject info = new JSONObject();
|