All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m53s
统一处理百分比和系数两种折扣输入方式,增加边界保护 在金额计算中使用math.Round进行四舍五入处理 添加相关单元测试确保计算准确性
36 lines
962 B
Go
36 lines
962 B
Go
package order
|
|
|
|
import (
|
|
"testing"
|
|
"github.com/perfect-panel/server/internal/model/payment"
|
|
)
|
|
|
|
func TestCalculateFee_Percent(t *testing.T) {
|
|
p := &payment.Payment{FeeMode: 1, FeePercent: 5}
|
|
if calculateFee(1000, p) != 50 {
|
|
t.Fatal("fee percent 5% of 1000 should be 50")
|
|
}
|
|
}
|
|
|
|
func TestCalculateFee_PercentRounding(t *testing.T) {
|
|
p := &payment.Payment{FeeMode: 1, FeePercent: 5}
|
|
if calculateFee(999, p) != 50 { // 999*5% = 49.95 → round to 50
|
|
t.Fatal("fee percent 5% of 999 should round to 50")
|
|
}
|
|
}
|
|
|
|
func TestCalculateFee_Fixed(t *testing.T) {
|
|
p := &payment.Payment{FeeMode: 2, FeeAmount: 300}
|
|
if calculateFee(1000, p) != 300 {
|
|
t.Fatal("fixed fee 300 should be 300")
|
|
}
|
|
}
|
|
|
|
func TestCalculateFee_Mixed(t *testing.T) {
|
|
p := &payment.Payment{FeeMode: 3, FeePercent: 10, FeeAmount: 100}
|
|
if calculateFee(1000, p) != 200 {
|
|
t.Fatal("mixed fee 10% + 100 of 1000 should be 200")
|
|
}
|
|
}
|
|
|