fender/all_test.go
2021-07-09 12:46:24 +02:00

46 lines
1.3 KiB
Go

package fender_test
import (
"testing"
"github.com/foomo/fender"
"github.com/foomo/fender/fend"
"github.com/foomo/fender/rule"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
)
func TestAll(t *testing.T) {
t.Run("success", func(t *testing.T) {
err := fender.All(
fender.Field("foo", fend.String("foo", rule.RequiredString, rule.MinString(1))),
fender.Field("bar", fend.String("foo", rule.RequiredString, rule.MinString(1))),
)
assert.NoError(t, err)
})
t.Run("errors", func(t *testing.T) {
err := fender.All(
fender.Field("foo", fend.String("", rule.RequiredString, rule.MinString(10))),
fender.Field("bar", fend.String("bar", rule.RequiredString, rule.MinString(10))),
)
assert.Error(t, err)
assert.True(t, errors.Is(err, fender.Err))
errs := err.(*fender.Error).Errors()
assert.Len(t, errs, 2)
assert.EqualError(t, err, "foo:required;bar:min=10")
})
t.Run("errors combined", func(t *testing.T) {
err := fender.All(
fender.Field("foo", fend.String("", rule.RequiredString, rule.MinString(10))),
fender.Field("foo", fend.String("", rule.MinString(10), rule.RequiredString)),
)
assert.Error(t, err)
assert.True(t, errors.Is(err, fender.Err))
errs := err.(*fender.Error).Errors()
assert.Len(t, errs, 1)
assert.EqualError(t, err, "foo:required")
})
}