补充代管订单结算回归测试
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user