继续补齐核心模块 Context 超时控制

This commit is contained in:
yml2213
2026-06-10 11:50:27 +08:00
parent 334436f381
commit d2858c529d
26 changed files with 552 additions and 515 deletions
+22 -22
View File
@@ -53,28 +53,28 @@ func TestRentalFullFlowWithMockPayment(t *testing.T) {
assertEqual(t, "支付状态", paymentDTO.Status, "paid")
assertEqual(t, "支付金额", paymentDTO.AmountCent, int64(53300))
paidOrder, err := services.order.FindAdmin(orderDTO.ID)
paidOrder, err := services.order.FindAdmin(t.Context(), orderDTO.ID)
if err != nil {
t.Fatalf("读取已支付订单失败: %v", err)
}
assertEqual(t, "支付后订单状态", paidOrder.Status, "pending_handoff")
assertEqual(t, "支付后交接状态", paidOrder.HandoffStatus, "pending_owner")
if _, err := services.order.SubmitHandoff(owner.ID, orderDTO.ID, order.SubmitHandoffRequest{Content: "账号:demo,密码:demo-pass"}); err != nil {
if _, err := services.order.SubmitHandoff(t.Context(), owner.ID, orderDTO.ID, order.SubmitHandoffRequest{Content: "账号:demo,密码:demo-pass"}); err != nil {
t.Fatalf("号主交接失败: %v", err)
}
if err := services.order.ConfirmReceive(renter.ID, orderDTO.ID); err != nil {
if err := services.order.ConfirmReceive(t.Context(), renter.ID, orderDTO.ID); err != nil {
t.Fatalf("租客确认收号失败: %v", err)
}
if _, err := services.order.SubmitCheckout(renter.ID, orderDTO.ID, order.SubmitCheckoutRequest{
if _, err := services.order.SubmitCheckout(t.Context(), renter.ID, orderDTO.ID, order.SubmitCheckoutRequest{
Content: "租客发起结账",
ConsumableAmountCent: 700,
CoinConsumedM: 90,
}); err != nil {
t.Fatalf("租客发起结账失败: %v", err)
}
countered, err := services.order.CounterCheckout(owner.ID, orderDTO.ID, order.CounterCheckoutRequest{
countered, err := services.order.CounterCheckout(t.Context(), owner.ID, orderDTO.ID, order.CounterCheckoutRequest{
ConsumableAmountCent: 1200,
CoinConsumedM: 100,
DepositDeductAmountCent: 3000,
@@ -84,11 +84,11 @@ func TestRentalFullFlowWithMockPayment(t *testing.T) {
t.Fatalf("号主反价失败: %v", err)
}
assertEqual(t, "反价状态", countered.Status, "countered")
if err := services.order.AcceptCheckout(renter.ID, orderDTO.ID); err != nil {
if err := services.order.AcceptCheckout(t.Context(), renter.ID, orderDTO.ID); err != nil {
t.Fatalf("租客接受反价失败: %v", err)
}
completed, err := services.order.FindAdmin(orderDTO.ID)
completed, err := services.order.FindAdmin(t.Context(), orderDTO.ID)
if err != nil {
t.Fatalf("读取完成订单失败: %v", err)
}
@@ -119,20 +119,20 @@ func TestArbitrationReleaseDepositDoesNotRepublishListing(t *testing.T) {
if _, err := services.payment.Start(t.Context(), renter.ID, orderDTO.ID, payment.StartPaymentRequest{}, "127.0.0.1"); err != nil {
t.Fatalf("启动 mock 支付失败: %v", err)
}
if _, err := services.order.SubmitHandoff(owner.ID, orderDTO.ID, order.SubmitHandoffRequest{Content: "账号:demo,密码:demo-pass"}); err != nil {
if _, err := services.order.SubmitHandoff(t.Context(), owner.ID, orderDTO.ID, order.SubmitHandoffRequest{Content: "账号:demo,密码:demo-pass"}); err != nil {
t.Fatalf("号主交接失败: %v", err)
}
if err := services.order.ConfirmReceive(renter.ID, orderDTO.ID); err != nil {
if err := services.order.ConfirmReceive(t.Context(), renter.ID, orderDTO.ID); err != nil {
t.Fatalf("租客确认收号失败: %v", err)
}
if _, err := services.order.SubmitCheckout(renter.ID, orderDTO.ID, order.SubmitCheckoutRequest{
if _, err := services.order.SubmitCheckout(t.Context(), renter.ID, orderDTO.ID, order.SubmitCheckoutRequest{
Content: "租客发起结账",
ConsumableAmountCent: 700,
CoinConsumedM: 90,
}); err != nil {
t.Fatalf("租客发起结账失败: %v", err)
}
if _, err := services.order.CounterCheckout(owner.ID, orderDTO.ID, order.CounterCheckoutRequest{
if _, err := services.order.CounterCheckout(t.Context(), owner.ID, orderDTO.ID, order.CounterCheckoutRequest{
ConsumableAmountCent: 1200,
CoinConsumedM: 100,
DepositDeductAmountCent: 3000,
@@ -141,7 +141,7 @@ func TestArbitrationReleaseDepositDoesNotRepublishListing(t *testing.T) {
t.Fatalf("号主反价失败: %v", err)
}
disputeDTO, err := services.dispute.Create(renter.ID, orderDTO.ID, dispute.CreateRequest{
disputeDTO, err := services.dispute.Create(t.Context(), renter.ID, orderDTO.ID, dispute.CreateRequest{
Type: "checkout_amount",
Description: "不同意扣押金,申请客服仲裁",
})
@@ -149,7 +149,7 @@ func TestArbitrationReleaseDepositDoesNotRepublishListing(t *testing.T) {
t.Fatalf("创建结账争议失败: %v", err)
}
assertEqual(t, "争议类型", disputeDTO.Type, "checkout_dispute")
resolved, err := services.dispute.Arbitrate(adminID, disputeDTO.ID, dispute.ArbitrateRequest{
resolved, err := services.dispute.Arbitrate(t.Context(), adminID, disputeDTO.ID, dispute.ArbitrateRequest{
Result: "release_deposit",
Remark: "确认无押金扣除,退回押金",
}, auditlog.Meta{IP: "127.0.0.1", RequestID: "e2e-arbitrate"})
@@ -158,7 +158,7 @@ func TestArbitrationReleaseDepositDoesNotRepublishListing(t *testing.T) {
}
assertEqual(t, "争议状态", resolved.Status, "resolved")
completed, err := services.order.FindAdmin(orderDTO.ID)
completed, err := services.order.FindAdmin(t.Context(), orderDTO.ID)
if err != nil {
t.Fatalf("读取仲裁后订单失败: %v", err)
}
@@ -209,15 +209,15 @@ func newFlowServices(db *gorm.DB) flowServices {
configRepo := paymentconfig.NewRepository(db, &paymentconfig.MockEncryptor{})
paymentRepo := payment.NewRepository(db, configRepo, orderRepo, walletRepo)
disputeRepo := dispute.NewRepository(db)
orderRepo.SetRefundFunc(func(orderID uint64, refundAmountCent int64, bizType string, remark string) (string, error) {
refund, err := paymentRepo.StartRefund(context.Background(), orderID, refundAmountCent, bizType, remark)
orderRepo.SetRefundFunc(func(ctx context.Context, orderID uint64, refundAmountCent int64, bizType string, remark string) (string, error) {
refund, err := paymentRepo.StartRefund(ctx, orderID, refundAmountCent, bizType, remark)
if err != nil {
return "", err
}
return refund.Status, nil
})
disputeRepo.SetRefundFunc(func(orderID uint64, refundAmountCent int64, bizType string, remark string) (string, error) {
refund, err := paymentRepo.StartRefund(context.Background(), orderID, refundAmountCent, bizType, remark)
disputeRepo.SetRefundFunc(func(ctx context.Context, orderID uint64, refundAmountCent int64, bizType string, remark string) (string, error) {
refund, err := paymentRepo.StartRefund(ctx, orderID, refundAmountCent, bizType, remark)
if err != nil {
return "", err
}
@@ -364,7 +364,7 @@ func seedRealname(t *testing.T, db *gorm.DB, userID uint64, name string, verifie
func seedMockPaymentConfig(t *testing.T, service *paymentconfig.Service, adminID uint64) {
t.Helper()
_, err := service.Create(paymentconfig.CreateRequest{
_, err := service.Create(t.Context(), paymentconfig.CreateRequest{
Name: "E2E Mock 支付",
Provider: "mock",
MerchantID: "mock-e2e",
@@ -424,14 +424,14 @@ func createListingUnderReview(t *testing.T, service *listing.Service, ownerID ui
func adjustAndApproveListing(t *testing.T, service *listing.Service, adminID uint64, listingID uint64) *listing.ListingDTO {
t.Helper()
adjusted, err := service.AdjustReviewPrice(adminID, listingID, listing.AdminPriceAdjustRequest{
adjusted, err := service.AdjustReviewPrice(t.Context(), adminID, listingID, listing.AdminPriceAdjustRequest{
BuyerTotalPriceCent: 38300,
Reason: "E2E 审核调价",
}, auditlog.Meta{IP: "127.0.0.1", RequestID: "e2e-adjust-price"})
if err != nil {
t.Fatalf("审核调价失败: %v", err)
}
approved, err := service.Approve(adjusted.ID)
approved, err := service.Approve(t.Context(), adjusted.ID)
if err != nil {
t.Fatalf("审核通过失败: %v", err)
}
@@ -441,7 +441,7 @@ func adjustAndApproveListing(t *testing.T, service *listing.Service, adminID uin
func mustCreateOrder(t *testing.T, service *order.Service, renterID uint64, listingID uint64) *order.OrderDTO {
t.Helper()
dto, err := service.Create(renterID, order.CreateRequest{ListingID: listingID})
dto, err := service.Create(t.Context(), renterID, order.CreateRequest{ListingID: listingID})
if err != nil {
t.Fatalf("创建订单失败: %v", err)
}