diff --git a/backend/internal/service/payment_order_result_test.go b/backend/internal/service/payment_order_result_test.go index bfe275481c..3a96df54b8 100644 --- a/backend/internal/service/payment_order_result_test.go +++ b/backend/internal/service/payment_order_result_test.go @@ -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() diff --git a/backend/internal/service/payment_service.go b/backend/internal/service/payment_service.go index 2759aba145..c1deb667ef 100644 --- a/backend/internal/service/payment_service.go +++ b/backend/internal/service/payment_service.go @@ -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