//go:build unit package handler import ( "testing" "github.com/Wei-Shaw/sub2api/internal/payment" "github.com/Wei-Shaw/sub2api/internal/service" ) func TestApplyWeChatPaymentResumeClaims(t *testing.T) { t.Parallel() req := CreateOrderRequest{ Amount: 0, PaymentType: payment.TypeWxpay, OrderType: payment.OrderTypeBalance, } err := applyWeChatPaymentResumeClaims(&req, &service.WeChatPaymentResumeClaims{ OpenID: "openid-123", PaymentType: payment.TypeWxpay, Amount: "12.50", OrderType: payment.OrderTypeSubscription, PlanID: 7, }) if err != nil { t.Fatalf("applyWeChatPaymentResumeClaims returned error: %v", err) } if req.OpenID != "openid-123" { t.Fatalf("openid = %q, want %q", req.OpenID, "openid-123") } if req.Amount != 12.5 { t.Fatalf("amount = %v, want 12.5", req.Amount) } if req.OrderType != payment.OrderTypeSubscription { t.Fatalf("order_type = %q, want %q", req.OrderType, payment.OrderTypeSubscription) } if req.PlanID != 7 { t.Fatalf("plan_id = %d, want 7", req.PlanID) } } func TestApplyWeChatPaymentResumeClaimsRejectsPaymentTypeMismatch(t *testing.T) { t.Parallel() req := CreateOrderRequest{ PaymentType: payment.TypeAlipay, } err := applyWeChatPaymentResumeClaims(&req, &service.WeChatPaymentResumeClaims{ OpenID: "openid-123", PaymentType: payment.TypeWxpay, Amount: "12.50", OrderType: payment.OrderTypeBalance, }) if err == nil { t.Fatal("applyWeChatPaymentResumeClaims should reject mismatched payment types") } }