| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using Application.Abstractions.Payment;
- namespace Application.Tests;
- /// <summary>
- /// IDanalPayService 수제 fake — PG 호출 횟수를 기록하고 설정된 결과/예외를 반환한다.
- /// </summary>
- internal sealed class FakeDanalPayService : IDanalPayService
- {
- public DanalConfirmResult ConfirmResult { get; set; } = SuccessConfirm();
- public Exception? ConfirmException { get; set; }
- public DanalCancelResult CancelResult { get; set; } = SuccessCancel();
- public Exception? CancelException { get; set; }
- public int ConfirmCallCount { get; private set; }
- public int CancelCallCount { get; private set; }
- public Task<DanalClientConfig> GetClientConfigAsync(CancellationToken ct)
- => Task.FromResult(new DanalClientConfig("test-client-key", "MID-TEST"));
- public Task<DanalConfirmResult> ConfirmAsync(string method, string transactionID, string orderID, int amount, CancellationToken ct)
- {
- ConfirmCallCount++;
- if (ConfirmException is not null)
- {
- throw ConfirmException;
- }
- return Task.FromResult(ConfirmResult);
- }
- public Task<DanalCancelResult> CancelAsync(string method, string transactionID, int amount, string cancelType, CancellationToken ct)
- {
- CancelCallCount++;
- if (CancelException is not null)
- {
- throw CancelException;
- }
- return Task.FromResult(CancelResult);
- }
- public static DanalConfirmResult SuccessConfirm() => new(
- Success: true, Code: "0000", Message: "OK", TransactionID: "TX-OK", OrderName: "포인트 충전",
- TotalAmount: null, DiscountAmount: null, UserName: null,
- TransDate: null, TransTime: null,
- CardCode: null, CardName: null, CardNo: null,
- InstallmentMonths: null, ApproveNo: null,
- ApprovalDateTime: null, AuthKey: null,
- AccountNumber: null, BankCode: null, UserId: null, UserEmail: null,
- BankName: null, ExpireDate: null, ExpireTime: null,
- VirtualAccountNumber: null, UseCashReceipt: null);
- public static DanalConfirmResult FailConfirm(string code = "9999", string message = "승인 거절")
- => SuccessConfirm() with { Success = false, Code = code, Message = message };
- public static DanalCancelResult SuccessCancel() => new(
- Success: true, Code: "0000", Message: "OK", OriginalTransactionID: "TX-OK",
- CancelledAmount: null, TransDate: null, TransTime: null,
- Balance: null, RemainedAmount: null, ApprovalDateTime: null);
- }
|