All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m53s
统一处理百分比和系数两种折扣输入方式,增加边界保护 在金额计算中使用math.Round进行四舍五入处理 添加相关单元测试确保计算准确性
32 lines
834 B
Go
32 lines
834 B
Go
package order
|
|
|
|
import (
|
|
"testing"
|
|
"github.com/perfect-panel/server/internal/model/coupon"
|
|
)
|
|
|
|
func TestCalculateCoupon_Percent(t *testing.T) {
|
|
c := &coupon.Coupon{Type: 1, Discount: 10}
|
|
got := calculateCoupon(1000, c)
|
|
if got != 100 {
|
|
t.Fatalf("percent coupon expected 100, got %d", got)
|
|
}
|
|
}
|
|
|
|
func TestCalculateCoupon_PercentRounding(t *testing.T) {
|
|
c := &coupon.Coupon{Type: 1, Discount: 10}
|
|
got := calculateCoupon(999, c) // 999*10% = 99.9 → round to 100
|
|
if got != 100 {
|
|
t.Fatalf("percent coupon rounding expected 100, got %d", got)
|
|
}
|
|
}
|
|
|
|
func TestCalculateCoupon_FixedCap(t *testing.T) {
|
|
c := &coupon.Coupon{Type: 2, Discount: 300}
|
|
got := calculateCoupon(200, c)
|
|
if got != 200 {
|
|
t.Fatalf("fixed coupon capped by amount expected 200, got %d", got)
|
|
}
|
|
}
|
|
|