fix(payment): support plural subscription validity units

This commit is contained in:
milesians
2026-06-23 15:22:55 +08:00
parent 85a3b12254
commit 147c1879d9
2 changed files with 34 additions and 4 deletions
@@ -138,6 +138,34 @@ func TestCalculateCreateOrderPayAmountRejectsFractionalZeroDecimal(t *testing.T)
}
}
func TestComputeValidityDaysSupportsSingularAndPluralUnits(t *testing.T) {
t.Parallel()
tests := []struct {
name string
days int
unit string
want int
}{
{name: "days", days: 1, unit: "days", want: 1},
{name: "week", days: 1, unit: "week", want: 7},
{name: "weeks", days: 2, unit: "weeks", want: 14},
{name: "month", days: 1, unit: "month", want: 30},
{name: "months", days: 1, unit: "months", want: 30},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
if got := psComputeValidityDays(tt.days, tt.unit); got != tt.want {
t.Fatalf("psComputeValidityDays(%d, %q) = %d, want %d", tt.days, tt.unit, got, tt.want)
}
})
}
}
func TestBuildPaymentSubjectAppliesAffixToSubscriptionPlanProductName(t *testing.T) {
t.Parallel()
+6 -4
View File
@@ -337,15 +337,17 @@ func psSliceContains(sl []string, s string) bool {
// Subscription validity period unit constants.
const (
validityUnitWeek = "week"
validityUnitMonth = "month"
validityUnitWeek = "week"
validityUnitWeeks = "weeks"
validityUnitMonth = "month"
validityUnitMonths = "months"
)
func psComputeValidityDays(days int, unit string) int {
switch unit {
case validityUnitWeek:
case validityUnitWeek, validityUnitWeeks:
return days * 7
case validityUnitMonth:
case validityUnitMonth, validityUnitMonths:
return days * 30
default:
return days