package reacquisition import ( "errors" "testing" ) func TestValidateRejectsWhatTheCheckWouldReject(t *testing.T) { // Each case mirrors a CHECK in migration 0056. Validating in Go as well // means the API answers 400 with a readable message instead of surfacing // a constraint violation. cases := []struct { name string in Settings }{ {"zero grace would fire on every transient unmount", mutate(func(s *Settings) { s.GraceHours = 0 })}, {"grace beyond a month", mutate(func(s *Settings) { s.GraceHours = 721 })}, {"zero per pass means never sweep", mutate(func(s *Settings) { s.MaxPerPass = 0 })}, {"per pass beyond the cap", mutate(func(s *Settings) { s.MaxPerPass = 201 })}, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { if err := validate(c.in); !errors.Is(err, ErrOutOfRange) { t.Errorf("validate() = %v, want ErrOutOfRange", err) } }) } } func TestValidateAcceptsDefaults(t *testing.T) { if err := validate(Defaults); err != nil { t.Fatalf("the shipped defaults must be valid, got %v", err) } } func mutate(f func(*Settings)) Settings { s := Defaults f(&s) return s }