62 lines
1.8 KiB
Go
62 lines
1.8 KiB
Go
package order
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"hfb_sys/backend/internal/model"
|
|
|
|
"gorm.io/datatypes"
|
|
)
|
|
|
|
func TestCalculateInsuranceFeeCent(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
ownerCent int64
|
|
bps int
|
|
want int64
|
|
}{
|
|
{name: "普通赔付不收费", ownerCent: 10000, bps: 0, want: 0},
|
|
{name: "普通保险百分之八", ownerCent: 10000, bps: 800, want: 800},
|
|
{name: "极品保险百分之四", ownerCent: 10000, bps: 400, want: 400},
|
|
{name: "四舍五入到分", ownerCent: 12345, bps: 800, want: 988},
|
|
{name: "服务费不超过到手租金", ownerCent: 100, bps: 10000, want: 100},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := calculateInsuranceFeeCent(tt.ownerCent, tt.bps); got != tt.want {
|
|
t.Fatalf("calculateInsuranceFeeCent() = %d, want %d", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestCalculateCheckoutSettlementDeductsPremiumInsuranceFee(t *testing.T) {
|
|
order := model.RentalOrder{
|
|
RentAmountCent: 38300,
|
|
OwnerRentAmountCent: 35300,
|
|
DepositAmountCent: 15000,
|
|
InsuranceFeeBps: 400,
|
|
AccountSnapshot: datatypes.JSON([]byte(`{
|
|
"haf_coin_amount": 100000000,
|
|
"asset_summary": {
|
|
"price_breakdown": {
|
|
"buyer_coin_base_price": 263,
|
|
"seller_coin_base_price": 233,
|
|
"consumable_price": 120
|
|
}
|
|
}
|
|
}`)),
|
|
}
|
|
|
|
settlement := calculateCheckoutSettlement(order, 12000, 100, 0)
|
|
if settlement.InsuranceFeeBps != 400 || settlement.InsuranceFeeCent != 1412 {
|
|
t.Fatalf("保险费用快照不正确: bps=%d fee=%d", settlement.InsuranceFeeBps, settlement.InsuranceFeeCent)
|
|
}
|
|
if settlement.OwnerRentIncomeCent != 33888 {
|
|
t.Fatalf("号主净租金 = %d, want 33888", settlement.OwnerRentIncomeCent)
|
|
}
|
|
if settlement.PlatformFeeCent != 4412 {
|
|
t.Fatalf("平台收入 = %d, want 4412", settlement.PlatformFeeCent)
|
|
}
|
|
}
|