add value vithh error (#1)
Co-authored-by: andrey1s <andrey@4devs.pro> Reviewed-on: #1 Co-authored-by: andrey <andrey@4devs.io> Co-committed-by: andrey <andrey@4devs.io>
This commit was merged in pull request #1.
This commit is contained in:
@@ -4,13 +4,13 @@ import "gitoa.ru/go-4devs/console/input/value"
|
||||
|
||||
func Enum(enum ...string) func(value.Value) error {
|
||||
return func(in value.Value) error {
|
||||
v := in.String()
|
||||
val := in.String()
|
||||
for _, e := range enum {
|
||||
if e == v {
|
||||
if e == val {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return NewError(ErrInvalid, v, enum)
|
||||
return NewError(ErrInvalid, val, enum)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import (
|
||||
)
|
||||
|
||||
func TestEnum(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
validValue := value.New("valid")
|
||||
invalidValue := value.New("invalid")
|
||||
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
package validator
|
||||
|
||||
import (
|
||||
"gitoa.ru/go-4devs/console/input/flag"
|
||||
"gitoa.ru/go-4devs/console/input/value"
|
||||
"gitoa.ru/go-4devs/console/input/value/flag"
|
||||
)
|
||||
|
||||
//nolint: gocyclo
|
||||
func NotBlank(f flag.Flag) func(value.Value) error {
|
||||
//nolint:gocyclo,cyclop
|
||||
func NotBlank(fl flag.Flag) func(value.Value) error {
|
||||
return func(in value.Value) error {
|
||||
switch {
|
||||
case f.IsAny() && in.Any() != nil:
|
||||
case fl.IsAny() && in.Any() != nil:
|
||||
return nil
|
||||
case f.IsArray():
|
||||
return arrayNotBlank(f, in)
|
||||
case f.IsInt() && in.Int() != 0:
|
||||
case fl.IsArray():
|
||||
return arrayNotBlank(fl, in)
|
||||
case fl.IsInt() && in.Int() != 0:
|
||||
return nil
|
||||
case f.IsInt64() && in.Int64() != 0:
|
||||
case fl.IsInt64() && in.Int64() != 0:
|
||||
return nil
|
||||
case f.IsUint() && in.Uint() != 0:
|
||||
case fl.IsUint() && in.Uint() != 0:
|
||||
return nil
|
||||
case f.IsUint64() && in.Uint64() != 0:
|
||||
case fl.IsUint64() && in.Uint64() != 0:
|
||||
return nil
|
||||
case f.IsFloat64() && in.Float64() != 0:
|
||||
case fl.IsFloat64() && in.Float64() != 0:
|
||||
return nil
|
||||
case f.IsDuration() && in.Duration() != 0:
|
||||
case fl.IsDuration() && in.Duration() != 0:
|
||||
return nil
|
||||
case f.IsTime() && !in.Time().IsZero():
|
||||
case fl.IsTime() && !in.Time().IsZero():
|
||||
return nil
|
||||
case f.IsString() && len(in.String()) > 0:
|
||||
case fl.IsString() && len(in.String()) > 0:
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -35,10 +35,10 @@ func NotBlank(f flag.Flag) func(value.Value) error {
|
||||
}
|
||||
}
|
||||
|
||||
//nolint: gocyclo,gocognit
|
||||
func arrayNotBlank(f flag.Flag, in value.Value) error {
|
||||
//nolint:gocyclo,gocognit,cyclop
|
||||
func arrayNotBlank(fl flag.Flag, in value.Value) error {
|
||||
switch {
|
||||
case f.IsInt() && len(in.Ints()) > 0:
|
||||
case fl.IsInt() && len(in.Ints()) > 0:
|
||||
for _, i := range in.Ints() {
|
||||
if i == 0 {
|
||||
return ErrNotBlank
|
||||
@@ -46,7 +46,7 @@ func arrayNotBlank(f flag.Flag, in value.Value) error {
|
||||
}
|
||||
|
||||
return nil
|
||||
case f.IsInt64() && len(in.Int64s()) > 0:
|
||||
case fl.IsInt64() && len(in.Int64s()) > 0:
|
||||
for _, i := range in.Int64s() {
|
||||
if i == 0 {
|
||||
return ErrNotBlank
|
||||
@@ -54,7 +54,7 @@ func arrayNotBlank(f flag.Flag, in value.Value) error {
|
||||
}
|
||||
|
||||
return nil
|
||||
case f.IsUint() && len(in.Uints()) > 0:
|
||||
case fl.IsUint() && len(in.Uints()) > 0:
|
||||
for _, u := range in.Uints() {
|
||||
if u == 0 {
|
||||
return ErrNotBlank
|
||||
@@ -62,7 +62,7 @@ func arrayNotBlank(f flag.Flag, in value.Value) error {
|
||||
}
|
||||
|
||||
return nil
|
||||
case f.IsUint64() && len(in.Uint64s()) > 0:
|
||||
case fl.IsUint64() && len(in.Uint64s()) > 0:
|
||||
for _, u := range in.Uint64s() {
|
||||
if u == 0 {
|
||||
return ErrNotBlank
|
||||
@@ -70,7 +70,7 @@ func arrayNotBlank(f flag.Flag, in value.Value) error {
|
||||
}
|
||||
|
||||
return nil
|
||||
case f.IsFloat64() && len(in.Float64s()) > 0:
|
||||
case fl.IsFloat64() && len(in.Float64s()) > 0:
|
||||
for _, f := range in.Float64s() {
|
||||
if f == 0 {
|
||||
return ErrNotBlank
|
||||
@@ -78,9 +78,9 @@ func arrayNotBlank(f flag.Flag, in value.Value) error {
|
||||
}
|
||||
|
||||
return nil
|
||||
case f.IsBool() && len(in.Bools()) > 0:
|
||||
case fl.IsBool() && len(in.Bools()) > 0:
|
||||
return nil
|
||||
case f.IsDuration() && len(in.Durations()) > 0:
|
||||
case fl.IsDuration() && len(in.Durations()) > 0:
|
||||
for _, d := range in.Durations() {
|
||||
if d == 0 {
|
||||
return ErrNotBlank
|
||||
@@ -88,7 +88,7 @@ func arrayNotBlank(f flag.Flag, in value.Value) error {
|
||||
}
|
||||
|
||||
return nil
|
||||
case f.IsTime() && len(in.Times()) > 0:
|
||||
case fl.IsTime() && len(in.Times()) > 0:
|
||||
for _, t := range in.Times() {
|
||||
if t.IsZero() {
|
||||
return ErrNotBlank
|
||||
@@ -96,7 +96,7 @@ func arrayNotBlank(f flag.Flag, in value.Value) error {
|
||||
}
|
||||
|
||||
return nil
|
||||
case f.IsString() && len(in.Strings()) > 0:
|
||||
case fl.IsString() && len(in.Strings()) > 0:
|
||||
for _, st := range in.Strings() {
|
||||
if len(st) == 0 {
|
||||
return ErrNotBlank
|
||||
|
||||
@@ -5,12 +5,14 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gitoa.ru/go-4devs/console/input/flag"
|
||||
"gitoa.ru/go-4devs/console/input/validator"
|
||||
"gitoa.ru/go-4devs/console/input/value"
|
||||
"gitoa.ru/go-4devs/console/input/value/flag"
|
||||
)
|
||||
|
||||
func TestNotBlank(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
cases := map[string]struct {
|
||||
flag flag.Flag
|
||||
value value.Value
|
||||
@@ -103,7 +105,7 @@ func TestNotBlank(t *testing.T) {
|
||||
}
|
||||
|
||||
if err := valid(ca.empty); err == nil || !errors.Is(err, validator.ErrNotBlank) {
|
||||
t.Errorf("case: %s, expect: %s, got:%s", name, validator.ErrNotBlank, err)
|
||||
t.Errorf("case empty: %s, expect: %s, got:%s", name, validator.ErrNotBlank, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,14 @@ import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"gitoa.ru/go-4devs/console/input/flag"
|
||||
"gitoa.ru/go-4devs/console/input/validator"
|
||||
"gitoa.ru/go-4devs/console/input/value"
|
||||
"gitoa.ru/go-4devs/console/input/value/flag"
|
||||
)
|
||||
|
||||
func TestValid(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
validValue := value.New("one")
|
||||
invalidValue := value.New([]string{"one"})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user