keel/errors/wrappederror_test.go
2023-07-06 11:27:57 +02:00

76 lines
1.7 KiB
Go

package keelerrors_test
import (
"fmt"
"testing"
keelerrors "github.com/foomo/keel/errors"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
)
func ExampleNewWrappedError() {
parentErr := errors.New("parent")
childErr := errors.New("child")
wrappedErr := keelerrors.NewWrappedError(parentErr, childErr)
fmt.Println(parentErr)
fmt.Println(childErr)
fmt.Println(wrappedErr)
// Output:
// parent
// child
// parent: child
}
func TestNewWrappedError(t *testing.T) {
parentErr := errors.New("parent")
childErr := errors.New("child")
assert.Error(t, keelerrors.NewWrappedError(parentErr, childErr))
}
func TestWrapped(t *testing.T) {
parentErr := errors.New("parent")
childErr := errors.New("child")
assert.Error(t, keelerrors.NewWrappedError(parentErr, childErr))
}
func Test_wrappedError_As(t *testing.T) {
type (
Parent struct {
error
}
Child struct {
error
}
)
parentErr := &Parent{error: errors.New("parent")}
childErr := &Child{error: errors.New("parent")}
wrappedErr := keelerrors.NewWrappedError(parentErr, childErr)
var (
p *Parent
c *Child
)
if assert.ErrorAs(t, wrappedErr, &p) {
assert.EqualError(t, p, parentErr.Error())
}
if assert.ErrorAs(t, wrappedErr, &c) {
assert.EqualError(t, c, childErr.Error())
}
}
func Test_wrappedError_Error(t *testing.T) {
parentErr := errors.New("parent")
childErr := errors.New("child")
wrappedErr := keelerrors.NewWrappedError(parentErr, childErr)
assert.Equal(t, wrappedErr.Error(), "parent: child")
}
func Test_wrappedError_Is(t *testing.T) {
parentErr := errors.New("parent")
childErr := errors.New("child")
wrappedErr := keelerrors.NewWrappedError(parentErr, childErr)
assert.ErrorIs(t, wrappedErr, parentErr)
assert.ErrorIs(t, wrappedErr, childErr)
}