This repository has been archived on 2024-04-06. You can view files and clone it, but cannot push or open issues or pull requests.
core-old/internal/domain/error_test.go
Dawid Wysokiński 60d6dc1423
All checks were successful
continuous-integration/drone/push Build is passing
feat: add SliceValidationError
2023-02-13 06:19:30 +01:00

88 lines
2.1 KiB
Go

package domain_test
import (
"fmt"
"testing"
"gitea.dwysokinski.me/twhelp/core/internal/domain"
"github.com/stretchr/testify/assert"
)
func TestErrorCode_String(t *testing.T) {
t.Parallel()
assert.Equal(t, domain.ErrorCodeUnknown.String(), "internal-server-error")
assert.Equal(t, domain.ErrorCodeEntityNotFound.String(), "entity-not-found")
assert.Equal(t, domain.ErrorCodeValidationError.String(), "validation-error")
}
func TestValidationError(t *testing.T) {
t.Parallel()
err := domain.ValidationError{
Field: "test",
Err: domain.MinError{
Min: 25,
},
}
var _ domain.Error = err
assert.Equal(t, fmt.Sprintf("%s: %s", err.Field, err.Err.Error()), err.Error())
assert.Equal(t, err.Error(), err.UserError())
assert.ErrorIs(t, err, err.Err)
assert.Equal(t, domain.ErrorCodeValidationError, err.Code())
}
func TestSliceValidationError(t *testing.T) {
t.Parallel()
err := domain.SliceValidationError{
Field: "test",
Index: 15,
Err: domain.MinError{
Min: 25,
},
}
var _ domain.Error = err
assert.Equal(t, fmt.Sprintf("%s[%d]: %s", err.Field, err.Index, err.Err.Error()), err.Error())
assert.Equal(t, err.Error(), err.UserError())
assert.ErrorIs(t, err, err.Err)
assert.Equal(t, domain.ErrorCodeValidationError, err.Code())
}
func TestMinError(t *testing.T) {
t.Parallel()
err := domain.MinError{
Min: 25,
}
var _ domain.Error = err
assert.Equal(t, "must be no less than 25", err.Error())
assert.Equal(t, err.Error(), err.UserError())
assert.Equal(t, domain.ErrorCodeValidationError, err.Code())
}
func TestMaxError(t *testing.T) {
t.Parallel()
err := domain.MaxError{
Max: 25,
}
var _ domain.Error = err
assert.Equal(t, "must be no greater than 25", err.Error())
assert.Equal(t, err.Error(), err.UserError())
assert.Equal(t, domain.ErrorCodeValidationError, err.Code())
}
func TestMaxLengthError(t *testing.T) {
t.Parallel()
err := domain.MaxLengthError{
Max: 25,
}
var _ domain.Error = err
assert.Equal(t, "the length must be no more than 25", err.Error())
assert.Equal(t, err.Error(), err.UserError())
assert.Equal(t, domain.ErrorCodeValidationError, err.Code())
}