补充代管订单结算回归测试
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) {
|
func TestAdminPlatformCheckoutDisputeCreatesArbitrationCase(t *testing.T) {
|
||||||
db := setupOrderTestDB(t)
|
db := setupOrderTestDB(t)
|
||||||
if err := db.AutoMigrate(&model.Dispute{}); err != nil {
|
if err := db.AutoMigrate(&model.Dispute{}); err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user