优化结构
This commit is contained in:
@@ -1,120 +0,0 @@
|
||||
package payment
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"kra/internal/biz"
|
||||
|
||||
gopayDouyin "github.com/go-pay/gopay/douyin"
|
||||
gopayWechatV3 "github.com/go-pay/gopay/wechat/v3"
|
||||
)
|
||||
|
||||
func TestWechatV3RefundRejectsBlankIdentityBeforeClient(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
req *biz.PaymentRefundRequest
|
||||
want string
|
||||
}{
|
||||
{name: "blank trade number", req: &biz.PaymentRefundRequest{TradeNo: " ", RefundNo: "R1"}, want: "out_trade_no"},
|
||||
{name: "blank refund number", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: " "}, want: "out_refund_no"},
|
||||
{name: "invalid amount", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 2, TotalAmount: 1}, want: "金额"},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
_, err := (&wechatV3Adapter{}).Refund(context.Background(), tc.req, nil)
|
||||
if err == nil || !strings.Contains(err.Error(), tc.want) {
|
||||
t.Fatalf("Refund() error = %v, want %q", err, tc.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestWechatV3RefundIdentityValidation(t *testing.T) {
|
||||
valid := func() *gopayWechatV3.RefundOrderResponse {
|
||||
return &gopayWechatV3.RefundOrderResponse{
|
||||
OutTradeNo: " T1 ",
|
||||
OutRefundNo: " R1 ",
|
||||
RefundId: " WX-R1 ",
|
||||
}
|
||||
}
|
||||
refundID, err := validateWechatV3RefundIdentity(valid(), " T1 ", " R1 ")
|
||||
if err != nil {
|
||||
t.Fatalf("valid refund response: %v", err)
|
||||
}
|
||||
if refundID != "WX-R1" {
|
||||
t.Fatalf("refund id = %q, want %q", refundID, "WX-R1")
|
||||
}
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
edit func(*gopayWechatV3.RefundOrderResponse)
|
||||
}{
|
||||
{name: "trade number missing", edit: func(r *gopayWechatV3.RefundOrderResponse) { r.OutTradeNo = " " }},
|
||||
{name: "trade number mismatch", edit: func(r *gopayWechatV3.RefundOrderResponse) { r.OutTradeNo = "OTHER" }},
|
||||
{name: "refund number missing", edit: func(r *gopayWechatV3.RefundOrderResponse) { r.OutRefundNo = " " }},
|
||||
{name: "refund number mismatch", edit: func(r *gopayWechatV3.RefundOrderResponse) { r.OutRefundNo = "OTHER" }},
|
||||
{name: "provider refund id missing", edit: func(r *gopayWechatV3.RefundOrderResponse) { r.RefundId = " " }},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
refund := valid()
|
||||
tc.edit(refund)
|
||||
if _, err := validateWechatV3RefundIdentity(refund, "T1", "R1"); err == nil {
|
||||
t.Fatal("accepted invalid refund identity")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDouyinRefundRejectsBlankIdentityBeforeClient(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
req *biz.PaymentRefundRequest
|
||||
want string
|
||||
}{
|
||||
{name: "blank trade number", req: &biz.PaymentRefundRequest{TradeNo: " ", RefundNo: "R1"}, want: "out_trade_no"},
|
||||
{name: "blank refund number", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: " "}, want: "out_refund_no"},
|
||||
{name: "invalid amount", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 2, TotalAmount: 1}, want: "金额"},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
_, err := (&douyinAdapter{}).Refund(context.Background(), tc.req, nil)
|
||||
if err == nil || !strings.Contains(err.Error(), tc.want) {
|
||||
t.Fatalf("Refund() error = %v, want %q", err, tc.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDouyinRefundIdentityValidation(t *testing.T) {
|
||||
valid := func() *gopayDouyin.Refund {
|
||||
return &gopayDouyin.Refund{
|
||||
OutTradeNo: " T1 ",
|
||||
OutRefundNo: " R1 ",
|
||||
RefundId: " DY-R1 ",
|
||||
}
|
||||
}
|
||||
refundID, err := validateDouyinRefundIdentity(valid(), " T1 ", " R1 ")
|
||||
if err != nil {
|
||||
t.Fatalf("valid refund response: %v", err)
|
||||
}
|
||||
if refundID != "DY-R1" {
|
||||
t.Fatalf("refund id = %q, want %q", refundID, "DY-R1")
|
||||
}
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
edit func(*gopayDouyin.Refund)
|
||||
}{
|
||||
{name: "trade number missing", edit: func(r *gopayDouyin.Refund) { r.OutTradeNo = " " }},
|
||||
{name: "trade number mismatch", edit: func(r *gopayDouyin.Refund) { r.OutTradeNo = "OTHER" }},
|
||||
{name: "refund number missing", edit: func(r *gopayDouyin.Refund) { r.OutRefundNo = " " }},
|
||||
{name: "refund number mismatch", edit: func(r *gopayDouyin.Refund) { r.OutRefundNo = "OTHER" }},
|
||||
{name: "provider refund id missing", edit: func(r *gopayDouyin.Refund) { r.RefundId = " " }},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
refund := valid()
|
||||
tc.edit(refund)
|
||||
if _, err := validateDouyinRefundIdentity(refund, "T1", "R1"); err == nil {
|
||||
t.Fatal("accepted invalid refund identity")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user