package inquiry import ( "testing" "github.com/asaskevich/govalidator" ) func TestFormatValidationErrors(t *testing.T) { form := UpdateInquiryStatusForm{ Status: "done", Reason: "", } _, err := govalidator.ValidateStruct(form) if err == nil { t.Fatal("expected validation error") } message := FormatValidationErrors(err) if message == "" { t.Fatal("expected formatted validation message") } if message == err.Error() { t.Fatalf("expected humanized message, got raw error: %s", message) } } func TestInvalidStatusTransitionErrorMessage(t *testing.T) { err := NewInvalidStatusTransitionError(StatusPending, StatusApproved, []string{StatusReviewed, StatusRejected}) expected := "Cannot change inquiry status from pending to approved. Allowed next statuses: reviewed, rejected" if err.Error() != expected { t.Fatalf("got %q, want %q", err.Error(), expected) } finalErr := NewInvalidStatusTransitionError(StatusApproved, StatusReviewed, nil) if finalErr.Error() != "Inquiry status is already approved and cannot be changed" { t.Fatalf("unexpected final status message: %s", finalErr.Error()) } }