diff --git a/proj-acquirex/src/test/java/com/acquirex/approval/ApprovalServiceTest.java b/proj-acquirex/src/test/java/com/acquirex/approval/ApprovalServiceTest.java new file mode 100644 index 0000000..a1ef3aa --- /dev/null +++ b/proj-acquirex/src/test/java/com/acquirex/approval/ApprovalServiceTest.java @@ -0,0 +1,63 @@ +package com.acquirex.approval; + +import com.acquirex.approval.domain.ApprovalDomain; +import com.acquirex.approval.domain.ApprovalDomain.Request; +import com.acquirex.approval.domain.ApprovalDomain.Response; +import com.acquirex.approval.domain.ApprovalDomain.Status; +import com.acquirex.approval.service.ApprovalService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import java.math.BigDecimal; +import static org.junit.jupiter.api.Assertions.*; + +class ApprovalServiceTest { + private ApprovalService service; + + @BeforeEach + void setUp() { service = new ApprovalService(); } + + @Test + @DisplayName("유효한 요청으로 매입 승인 성공") + void processApproval_ValidRequest_Success() { + Request req = new Request("TXN-001", "MERCHANT-001", new BigDecimal("50000"), "1234567890123456"); + Response res = service.processApproval(req); + assertEquals(Status.APPROVED, res.getStatus()); + assertNotNull(res.getApprovalId()); + assertTrue(res.getApprovalId().startsWith("APR-")); + } + + @Test + @DisplayName("유효하지 않은 금액으로 매입 승인 거절") + void processApproval_InvalidAmount_Rejected() { + Request req = new Request("TXN-002", "MERCHANT-001", new BigDecimal("-1000"), "1234567890123456"); + assertEquals(Status.REJECTED, service.processApproval(req).getStatus()); + } + + @Test + @DisplayName("유효하지 않은 카드번호로 매입 승인 거절") + void processApproval_InvalidCardNumber_Rejected() { + Request req = new Request("TXN-003", "MERCHANT-001", new BigDecimal("50000"), "12345"); + assertEquals(Status.REJECTED, service.processApproval(req).getStatus()); + } + + @Test + @DisplayName("null 요청으로 매입 승인 거절") + void processApproval_NullRequest_Rejected() { + assertEquals(Status.REJECTED, service.processApproval(null).getStatus()); + } + + @Test + @DisplayName("유효한 승인 ID로 취소 성공") + void cancelApproval_ValidApprovalId_Success() { + Response res = service.cancelApproval("APR-12345678"); + assertEquals(Status.CANCELLED, res.getStatus()); + } + + @Test + @DisplayName("유효하지 않은 승인 ID로 취소 거절") + void cancelApproval_InvalidApprovalId_Rejected() { + assertEquals(Status.REJECTED, service.cancelApproval("").getStatus()); + assertEquals(Status.REJECTED, service.cancelApproval(null).getStatus()); + } +} \ No newline at end of file