新增撞车订单人工退款
This commit is contained in:
@@ -3,6 +3,7 @@ package payment
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -514,6 +515,103 @@ func TestStartRefundDoesNotCreateNewOrderWhenFailedRefundExists(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestStartMohongRefundDefaultsFullAmountForCancelledPaidOrder(t *testing.T) {
|
||||
db := setupPaymentTestDB(t)
|
||||
if err := db.AutoMigrate(&model.MohongOrder{}); err != nil {
|
||||
t.Fatalf("migrate mohong order failed: %v", err)
|
||||
}
|
||||
repo := NewRepository(db, nil, nil)
|
||||
order := model.MohongOrder{
|
||||
OrderNo: "MH202607310001",
|
||||
UserID: 42,
|
||||
ProductID: 8,
|
||||
Quantity: 1,
|
||||
UnitPriceCent: 13300,
|
||||
AmountCent: 13300,
|
||||
Status: model.MohongOrderStatusCancelled,
|
||||
}
|
||||
if err := db.Create(&order).Error; err != nil {
|
||||
t.Fatalf("create mohong order failed: %v", err)
|
||||
}
|
||||
original := model.PaymentOrder{
|
||||
PaymentNo: "PAYMOHONG0001",
|
||||
OrderID: order.ID,
|
||||
OrderNo: order.OrderNo,
|
||||
UserID: order.UserID,
|
||||
Provider: "mock",
|
||||
ThirdOrderID: "PAYMOHONG0001",
|
||||
ProviderOrderID: "MOCKPAYMOHONG0001",
|
||||
AmountCent: order.AmountCent,
|
||||
BizType: bizTypeMohongPay,
|
||||
Status: "paid",
|
||||
}
|
||||
if err := db.Create(&original).Error; err != nil {
|
||||
t.Fatalf("create mohong payment failed: %v", err)
|
||||
}
|
||||
|
||||
dto, err := repo.StartMohongRefund(t.Context(), order.ID, 0, "后台撞车订单人工退款")
|
||||
if err != nil {
|
||||
t.Fatalf("StartMohongRefund() error = %v", err)
|
||||
}
|
||||
if dto.AmountCent != order.AmountCent {
|
||||
t.Fatalf("refund amount = %d, want %d", dto.AmountCent, order.AmountCent)
|
||||
}
|
||||
if dto.BizType != bizTypeMohongRefund {
|
||||
t.Fatalf("refund biz_type = %q, want %q", dto.BizType, bizTypeMohongRefund)
|
||||
}
|
||||
if dto.Status != "refunded" {
|
||||
t.Fatalf("refund status = %q, want refunded", dto.Status)
|
||||
}
|
||||
|
||||
var latest model.MohongOrder
|
||||
if err := db.First(&latest, order.ID).Error; err != nil {
|
||||
t.Fatalf("find mohong order failed: %v", err)
|
||||
}
|
||||
if latest.Status != model.MohongOrderStatusRefunded {
|
||||
t.Fatalf("mohong order status = %q, want refunded", latest.Status)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStartMohongRefundRequiresCancelledOrder(t *testing.T) {
|
||||
db := setupPaymentTestDB(t)
|
||||
if err := db.AutoMigrate(&model.MohongOrder{}); err != nil {
|
||||
t.Fatalf("migrate mohong order failed: %v", err)
|
||||
}
|
||||
repo := NewRepository(db, nil, nil)
|
||||
order := model.MohongOrder{
|
||||
OrderNo: "MH202607310002",
|
||||
UserID: 42,
|
||||
ProductID: 8,
|
||||
Quantity: 1,
|
||||
UnitPriceCent: 13300,
|
||||
AmountCent: 13300,
|
||||
Status: model.MohongOrderStatusPaid,
|
||||
}
|
||||
if err := db.Create(&order).Error; err != nil {
|
||||
t.Fatalf("create mohong order failed: %v", err)
|
||||
}
|
||||
original := model.PaymentOrder{
|
||||
PaymentNo: "PAYMOHONG0002",
|
||||
OrderID: order.ID,
|
||||
OrderNo: order.OrderNo,
|
||||
UserID: order.UserID,
|
||||
Provider: "mock",
|
||||
ThirdOrderID: "PAYMOHONG0002",
|
||||
ProviderOrderID: "MOCKPAYMOHONG0002",
|
||||
AmountCent: order.AmountCent,
|
||||
BizType: bizTypeMohongPay,
|
||||
Status: "paid",
|
||||
}
|
||||
if err := db.Create(&original).Error; err != nil {
|
||||
t.Fatalf("create mohong payment failed: %v", err)
|
||||
}
|
||||
|
||||
_, err := repo.StartMohongRefund(t.Context(), order.ID, 0, "后台撞车订单人工退款")
|
||||
if !errors.Is(err, ErrRefundCannotStart) {
|
||||
t.Fatalf("StartMohongRefund() error = %v, want ErrRefundCannotStart", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestConfirmPaidUpdatesOrderAndPaymentInOnePath(t *testing.T) {
|
||||
db := setupPaymentTestDB(t)
|
||||
orderRepo := ordermodule.NewRepository(db)
|
||||
|
||||
Reference in New Issue
Block a user