40 lines
915 B
Go
40 lines
915 B
Go
|
|
package validate
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
errs "gateway/internal/library/errors"
|
||
|
|
"gateway/internal/library/errors/code"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestValidationErrors_AsErrors(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
|
||
|
|
ve := ValidationErrors{{Field: "id", Message: "id is required"}}
|
||
|
|
var target ValidationErrors
|
||
|
|
if !errors.As(ve, &target) {
|
||
|
|
t.Fatal("errors.As should match ValidationErrors")
|
||
|
|
}
|
||
|
|
got, ok := AsErrors(ve)
|
||
|
|
if !ok || len(got) != 1 {
|
||
|
|
t.Fatalf("AsErrors = %v, %v", got, ok)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestValidationErrors_ToBusinessError(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
|
||
|
|
ve := ValidationErrors{{Field: "email", Message: "invalid email"}}
|
||
|
|
be := ve.ToBusinessError(code.Facade)
|
||
|
|
if be == nil {
|
||
|
|
t.Fatal("expected business error")
|
||
|
|
}
|
||
|
|
if be.Category() != code.InputInvalidFormat {
|
||
|
|
t.Fatalf("category = %d, want %d", be.Category(), code.InputInvalidFormat)
|
||
|
|
}
|
||
|
|
if errs.FromError(be) == nil {
|
||
|
|
t.Fatal("FromError should unwrap")
|
||
|
|
}
|
||
|
|
}
|