hi-server/internal/logic/public/order/calculate_coupon_test.go
shanshanzhong 9987bd43fa
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m53s
fix(订单): 修复折扣计算问题并添加四舍五入处理
统一处理百分比和系数两种折扣输入方式,增加边界保护
在金额计算中使用math.Round进行四舍五入处理
添加相关单元测试确保计算准确性
2025-12-02 02:22:09 -08:00

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)
}
}