mirror of
https://github.com/aykhans/dodo.git
synced 2025-09-05 10:43:37 +00:00
Add 'Files' field to the 'Config'. Add 'Value' field to the 'FieldParseError'
This commit is contained in:
@@ -22,14 +22,15 @@ var (
|
||||
|
||||
type FieldParseError struct {
|
||||
Field string
|
||||
Value string
|
||||
Err error
|
||||
}
|
||||
|
||||
func NewFieldParseError(field string, err error) *FieldParseError {
|
||||
func NewFieldParseError(field string, value string, err error) *FieldParseError {
|
||||
if err == nil {
|
||||
err = ErrNoError
|
||||
}
|
||||
return &FieldParseError{field, err}
|
||||
return &FieldParseError{field, value, err}
|
||||
}
|
||||
|
||||
func (e FieldParseError) Error() string {
|
||||
|
@@ -10,7 +10,7 @@ import (
|
||||
func TestFieldParseError_Error(t *testing.T) {
|
||||
t.Run("Error returns formatted message", func(t *testing.T) {
|
||||
originalErr := errors.New("invalid value")
|
||||
fieldErr := NewFieldParseError("username", originalErr)
|
||||
fieldErr := NewFieldParseError("username", "testuser", originalErr)
|
||||
|
||||
expected := "Field 'username' parse failed: invalid value"
|
||||
assert.Equal(t, expected, fieldErr.Error())
|
||||
@@ -18,14 +18,14 @@ func TestFieldParseError_Error(t *testing.T) {
|
||||
|
||||
t.Run("Error with empty field name", func(t *testing.T) {
|
||||
originalErr := errors.New("test error")
|
||||
fieldErr := NewFieldParseError("", originalErr)
|
||||
fieldErr := NewFieldParseError("", "somevalue", originalErr)
|
||||
|
||||
expected := "Field '' parse failed: test error"
|
||||
assert.Equal(t, expected, fieldErr.Error())
|
||||
})
|
||||
|
||||
t.Run("Error with nil underlying error", func(t *testing.T) {
|
||||
fieldErr := NewFieldParseError("field", nil)
|
||||
fieldErr := NewFieldParseError("field", "value123", nil)
|
||||
|
||||
expected := "Field 'field' parse failed: no error (internal)"
|
||||
assert.Equal(t, expected, fieldErr.Error())
|
||||
@@ -35,13 +35,13 @@ func TestFieldParseError_Error(t *testing.T) {
|
||||
func TestFieldParseError_Unwrap(t *testing.T) {
|
||||
t.Run("Unwrap returns original error", func(t *testing.T) {
|
||||
originalErr := errors.New("original error")
|
||||
fieldErr := NewFieldParseError("field", originalErr)
|
||||
fieldErr := NewFieldParseError("field", "value", originalErr)
|
||||
|
||||
assert.Equal(t, originalErr, fieldErr.Unwrap())
|
||||
})
|
||||
|
||||
t.Run("Unwrap with nil error", func(t *testing.T) {
|
||||
fieldErr := NewFieldParseError("field", nil)
|
||||
fieldErr := NewFieldParseError("field", "value", nil)
|
||||
|
||||
assert.Equal(t, ErrNoError, fieldErr.Unwrap())
|
||||
})
|
||||
@@ -50,16 +50,18 @@ func TestFieldParseError_Unwrap(t *testing.T) {
|
||||
func TestNewFieldParseError(t *testing.T) {
|
||||
t.Run("Creates FieldParseError with correct values", func(t *testing.T) {
|
||||
originalErr := errors.New("test error")
|
||||
fieldErr := NewFieldParseError("testField", originalErr)
|
||||
fieldErr := NewFieldParseError("testField", "testValue", originalErr)
|
||||
|
||||
assert.Equal(t, "testField", fieldErr.Field)
|
||||
assert.Equal(t, "testValue", fieldErr.Value)
|
||||
assert.Equal(t, originalErr, fieldErr.Err)
|
||||
})
|
||||
|
||||
t.Run("Creates FieldParseError with ErrNoError when nil passed", func(t *testing.T) {
|
||||
fieldErr := NewFieldParseError("testField", nil)
|
||||
fieldErr := NewFieldParseError("testField", "testValue", nil)
|
||||
|
||||
assert.Equal(t, "testField", fieldErr.Field)
|
||||
assert.Equal(t, "testValue", fieldErr.Value)
|
||||
assert.Equal(t, ErrNoError, fieldErr.Err)
|
||||
})
|
||||
}
|
||||
@@ -72,7 +74,7 @@ func TestFieldParseErrors_Error(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Error with single error returns single error message", func(t *testing.T) {
|
||||
fieldErr := *NewFieldParseError("field1", errors.New("error1"))
|
||||
fieldErr := *NewFieldParseError("field1", "value1", errors.New("error1"))
|
||||
fieldErrors := NewFieldParseErrors([]FieldParseError{fieldErr})
|
||||
|
||||
expected := "Field 'field1' parse failed: error1"
|
||||
@@ -80,9 +82,9 @@ func TestFieldParseErrors_Error(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Error with multiple errors returns concatenated messages", func(t *testing.T) {
|
||||
fieldErr1 := *NewFieldParseError("field1", errors.New("error1"))
|
||||
fieldErr2 := *NewFieldParseError("field2", errors.New("error2"))
|
||||
fieldErr3 := *NewFieldParseError("field3", errors.New("error3"))
|
||||
fieldErr1 := *NewFieldParseError("field1", "value1", errors.New("error1"))
|
||||
fieldErr2 := *NewFieldParseError("field2", "value2", errors.New("error2"))
|
||||
fieldErr3 := *NewFieldParseError("field3", "value3", errors.New("error3"))
|
||||
fieldErrors := NewFieldParseErrors([]FieldParseError{fieldErr1, fieldErr2, fieldErr3})
|
||||
|
||||
expected := "Field 'field1' parse failed: error1\nField 'field2' parse failed: error2\nField 'field3' parse failed: error3"
|
||||
@@ -90,8 +92,8 @@ func TestFieldParseErrors_Error(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Error with two errors", func(t *testing.T) {
|
||||
fieldErr1 := *NewFieldParseError("username", errors.New("too short"))
|
||||
fieldErr2 := *NewFieldParseError("email", errors.New("invalid format"))
|
||||
fieldErr1 := *NewFieldParseError("username", "john", errors.New("too short"))
|
||||
fieldErr2 := *NewFieldParseError("email", "invalid", errors.New("invalid format"))
|
||||
fieldErrors := NewFieldParseErrors([]FieldParseError{fieldErr1, fieldErr2})
|
||||
|
||||
expected := "Field 'username' parse failed: too short\nField 'email' parse failed: invalid format"
|
||||
@@ -101,8 +103,8 @@ func TestFieldParseErrors_Error(t *testing.T) {
|
||||
|
||||
func TestNewFieldParseErrors(t *testing.T) {
|
||||
t.Run("Creates FieldParseErrors with correct values", func(t *testing.T) {
|
||||
fieldErr1 := *NewFieldParseError("field1", errors.New("error1"))
|
||||
fieldErr2 := *NewFieldParseError("field2", errors.New("error2"))
|
||||
fieldErr1 := *NewFieldParseError("field1", "value1", errors.New("error1"))
|
||||
fieldErr2 := *NewFieldParseError("field2", "value2", errors.New("error2"))
|
||||
fieldErrors := NewFieldParseErrors([]FieldParseError{fieldErr1, fieldErr2})
|
||||
|
||||
assert.Len(t, fieldErrors.Errors, 2)
|
||||
@@ -258,7 +260,7 @@ func TestErrorConstants(t *testing.T) {
|
||||
|
||||
func TestErrorImplementsErrorInterface(t *testing.T) {
|
||||
t.Run("FieldParseError implements error interface", func(t *testing.T) {
|
||||
var err error = NewFieldParseError("field", errors.New("test"))
|
||||
var err error = NewFieldParseError("field", "value", errors.New("test"))
|
||||
assert.Error(t, err)
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user