feat: live module and jenkins pipeline to harbor deploy
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package recharge
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
bizpayment "kra/internal/biz/payment"
|
||||
)
|
||||
|
||||
type repoStub struct {
|
||||
order *Order
|
||||
paidCall int
|
||||
}
|
||||
|
||||
func (r *repoStub) Plans(context.Context) ([]*Plan, error) { return nil, nil }
|
||||
func (r *repoStub) SavePlans(context.Context, []*Plan) error { return nil }
|
||||
func (r *repoStub) List(context.Context, Filter, ListOptions) ([]*Order, int64, *Summary, error) {
|
||||
return nil, 0, &Summary{}, nil
|
||||
}
|
||||
func (r *repoStub) Get(context.Context, string) (*Order, error) { return r.order, nil }
|
||||
func (r *repoStub) Create(context.Context, uint, uint) (*Order, error) { return r.order, nil }
|
||||
func (r *repoStub) MarkPaid(context.Context, string) (*Order, error) {
|
||||
r.paidCall++
|
||||
return r.order, nil
|
||||
}
|
||||
|
||||
func newTestUsecase(t *testing.T, repo Repo) *Usecase {
|
||||
t.Helper()
|
||||
payments := bizpayment.NewPaymentUsecase(nil, nil, bizpayment.NewPaymentHooks(), bizpayment.NewPaymentOrderSourceRegistry(), bizpayment.NewPaymentFulfillmentRegistry(), nil)
|
||||
uc, err := NewUsecase(repo, payments)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return uc
|
||||
}
|
||||
|
||||
func TestPreparePaymentUsesRechargeOrderFacts(t *testing.T) {
|
||||
repo := &repoStub{order: &Order{OrderNo: "CZ-1", UserID: 7, Diamonds: 300, AmountCents: 3000}}
|
||||
uc := newTestUsecase(t, repo)
|
||||
intent, err := uc.PreparePayment(context.Background(), bizpayment.PaymentWechatV3, "CZ-1", "CZ-1")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if intent.Amount != 3000 || intent.OriginalAmount != 3000 || intent.Currency != "CNY" || intent.Subject != "充值 300 钻石" {
|
||||
t.Fatalf("unexpected payment intent: %+v", intent)
|
||||
}
|
||||
if string(intent.Extra) != `{"diamonds":300,"userId":7}` {
|
||||
t.Fatalf("unexpected payment extra: %s", intent.Extra)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFulfillCreditsMatchingRechargeOnly(t *testing.T) {
|
||||
repo := &repoStub{order: &Order{OrderNo: "CZ-1", Diamonds: 60, AmountCents: 600}}
|
||||
uc := newTestUsecase(t, repo)
|
||||
err := uc.Fulfill(context.Background(), &bizpayment.PaymentConfirmation{
|
||||
TradeNo: "CZ-1", BusinessType: BusinessType, BusinessID: "CZ-1", Amount: 600, Currency: "CNY",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if repo.paidCall != 1 {
|
||||
t.Fatalf("paid calls = %d, want 1", repo.paidCall)
|
||||
}
|
||||
err = uc.Fulfill(context.Background(), &bizpayment.PaymentConfirmation{
|
||||
TradeNo: "CZ-1", BusinessType: BusinessType, BusinessID: "CZ-1", Amount: 601, Currency: "CNY",
|
||||
})
|
||||
if err == nil || repo.paidCall != 1 {
|
||||
t.Fatalf("mismatched payment was credited: err=%v calls=%d", err, repo.paidCall)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user