补充代管订单结算回归测试

This commit is contained in:
yml2213
2026-08-16 19:53:08 +08:00
parent 80e55ba281
commit c06e5aaafd
@@ -1414,6 +1414,56 @@ func TestAdminPlatformCheckoutCounterCanBeAcceptedByRenter(t *testing.T) {
}
}
func TestPlatformManagedCheckoutIncludesConsumableAndDepositCompensation(t *testing.T) {
db := setupOrderTestDB(t)
repo := NewRepository(db)
adminID := uint64(80)
_, renter, order := createPlatformManagedCheckoutOrder(t, db, adminID)
order.RentAmountCent = 12000
order.OwnerRentAmountCent = 10000
order.PlatformFeeCent = 2000
order.DepositAmountCent = 1000
order.PureCoinOriginalAmountCent = 10000
order.ExtraItemOriginalAmountCent = 2000
order.AccountSnapshot = datatypes.JSON([]byte(`{
"haf_coin_amount":1000000,
"asset_summary":{"price_breakdown":{"buyer_coin_base_price":100,"seller_coin_base_price":80,"consumable_price":20}}
}`))
if err := db.Save(&order).Error; err != nil {
t.Fatalf("update platform managed order: %v", err)
}
checkout := createOpenPlatformCheckout(t, db, order, renter.ID)
if _, err := repo.AdminPlatformCheckoutCounter(t.Context(), adminID, order.ID, CounterCheckoutRequest{
ConsumableAmountCent: 2000,
CoinConsumedM: 1,
DepositDeductAmountCent: 1000,
Reason: "客服核对消耗品和押金赔付",
}, AuditMeta{}); err != nil {
t.Fatalf("AdminPlatformCheckoutCounter() error = %v", err)
}
if err := repo.AcceptCheckout(t.Context(), renter.ID, order.ID); err != nil {
t.Fatalf("AcceptCheckout() error = %v", err)
}
var savedOrder model.RentalOrder
if err := db.First(&savedOrder, order.ID).Error; err != nil {
t.Fatalf("reload order failed: %v", err)
}
if savedOrder.OfflineSettlementAmountCent != 11000 {
t.Fatalf("offline settlement amount = %d, want 11000", savedOrder.OfflineSettlementAmountCent)
}
var savedCheckout model.OrderCheckout
if err := db.First(&savedCheckout, checkout.ID).Error; err != nil {
t.Fatalf("reload checkout failed: %v", err)
}
if savedCheckout.OwnerIncomeAmountCent != 11000 {
t.Fatalf("owner income amount = %d, want 11000", savedCheckout.OwnerIncomeAmountCent)
}
}
func TestAdminPlatformCheckoutDisputeCreatesArbitrationCase(t *testing.T) {
db := setupOrderTestDB(t)
if err := db.AutoMigrate(&model.Dispute{}); err != nil {