mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-09-24 16:05:44 +08:00
Merge pull request #3428 from Milesians/codex/fix-subscription-plan-validity-unit
fix(payment): support plural subscription validity units
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user