76 lines
2.0 KiB
Go
76 lines
2.0 KiB
Go
package main
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/descrybe/descrybe-v2/apps/api/internal/billing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestDecideAssignMissingPlanSkipsA1(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
mutate, reason := decideAssignMissingPlan(true, billing.A1LegacyCompanyID, "Anything")
|
||
|
|
if mutate || reason != "a1_cohort" {
|
||
|
|
t.Fatalf("A1 legacy id must never assign (even with -confirm): mutate=%v reason=%q", mutate, reason)
|
||
|
|
}
|
||
|
|
mutate, reason = decideAssignMissingPlan(true, "other-legacy-id", "A1 Slovenija")
|
||
|
|
if !mutate || reason != "" {
|
||
|
|
t.Fatalf("display name alone must not skip assign: mutate=%v reason=%q", mutate, reason)
|
||
|
|
}
|
||
|
|
mutate, reason = decideAssignMissingPlan(false, billing.A1LegacyCompanyID, "A1")
|
||
|
|
if mutate || reason != "" {
|
||
|
|
t.Fatalf("list-only: mutate=%v reason=%q", mutate, reason)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestResolveFallbackPlanIDEmpty(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
id, err := resolveFallbackPlanID(context.Background(), nil, " ")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if id != 0 {
|
||
|
|
t.Fatalf("got %d, want 0", id)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestNormalizeAssignPlanName(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
got, err := normalizeAssignPlanName(" Free ", true)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if got != "Free" {
|
||
|
|
t.Fatalf("got %q", got)
|
||
|
|
}
|
||
|
|
_, err = normalizeAssignPlanName(" ", true)
|
||
|
|
if err == nil || !strings.Contains(err.Error(), "-plan-name") {
|
||
|
|
t.Fatalf("expected plan-name error, got %v", err)
|
||
|
|
}
|
||
|
|
got, err = normalizeAssignPlanName(" ", false)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if got != "" {
|
||
|
|
t.Fatalf("list-only allows empty plan name, got %q", got)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestGuardLiveAssign(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
if err := guardLiveAssign(false, false, false); err != nil {
|
||
|
|
t.Fatalf("list-only: %v", err)
|
||
|
|
}
|
||
|
|
if err := guardLiveAssign(true, true, false); err != nil {
|
||
|
|
t.Fatalf("dry-run: %v", err)
|
||
|
|
}
|
||
|
|
if err := guardLiveAssign(true, false, true); err != nil {
|
||
|
|
t.Fatalf("confirm: %v", err)
|
||
|
|
}
|
||
|
|
err := guardLiveAssign(true, false, false)
|
||
|
|
if err == nil || !strings.Contains(err.Error(), "no blind live writes") {
|
||
|
|
t.Fatalf("expected blind-assign refusal, got %v", err)
|
||
|
|
}
|
||
|
|
}
|