Files
tm_back/internal/inquiry/validation_test.go
T
Mazyar eeafe2a625
continuous-integration/drone/push Build is passing
Add inquiry status transition error handling and validation improvements
- Introduced InvalidStatusTransitionError to handle invalid status transitions for inquiries, providing clearer error messages.
- Updated UpdateInquiryStatusForm to make the Reason field optional and added logic to set a default reason if not provided.
- Enhanced form validation tests to cover new status transition error scenarios and validation messages.
- Refactored handler methods to utilize new error handling functions for improved response management.

This update improves the robustness of inquiry status management by ensuring proper error handling and validation, enhancing user experience during status updates.
2026-07-01 22:50:44 +03:30

40 lines
1.1 KiB
Go

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())
}
}