优化结构

This commit is contained in:
Yvan
2026-08-29 08:40:15 +08:00
parent b6d25c1a0f
commit 509df03d61
17 changed files with 234 additions and 40 deletions
+27
View File
@@ -157,6 +157,33 @@ func testBizPaymentOrder() *PaymentOrder {
return &PaymentOrder{Provider: PaymentAlipay, TradeNo: "order-1", BusinessType: "game_item", BusinessID: "item-1", Subject: "item", Amount: 100, Currency: "CNY", PaymentStatus: PaymentStatusPending, FulfillmentStatus: FulfillmentStatusPending, RefundStatus: RefundStatusNone, ConfirmationID: "11111111-1111-1111-1111-111111111111"}
}
func TestDemoPaymentOperationsNeverReachExternalProviderOrFulfillment(t *testing.T) {
repo := &paymentRepoStub{query: successPaymentResult(), refund: successPaymentResult()}
order := testBizPaymentOrder()
order.TradeNo = "DEMO-PAY-01"
order.BusinessType = DemoBusinessType
order.PaymentStatus = PaymentStatusPaid
orders := &paymentOrderRepoStub{order: order}
registry := NewPaymentFulfillmentRegistry()
handler := &paymentFulfillmentStub{}
if err := registry.Register(handler); err != nil {
t.Fatal(err)
}
logger := slog.New(slog.NewTextHandler(io.Discard, nil))
uc := NewPaymentUsecase(repo, orders, nil, nil, registry, logger)
result, err := uc.Query(context.Background(), order.Provider, order.TradeNo)
if err != nil || result == nil || repo.queryCalls != 0 {
t.Fatalf("demo query result=%#v calls=%d err=%v", result, repo.queryCalls, err)
}
if _, err = uc.Refund(context.Background(), order.Provider, order.TradeNo, 10); err == nil || repo.refundedReq != nil {
t.Fatalf("demo refund reached provider: req=%#v err=%v", repo.refundedReq, err)
}
if _, err = uc.Fulfill(context.Background(), order.Provider, order.TradeNo); err == nil || handler.calls != 0 {
t.Fatalf("demo fulfillment reached handler: calls=%d err=%v", handler.calls, err)
}
}
func successPaymentResult() *PaymentResult {
return &PaymentResult{
Provider: PaymentAlipay,