Skip to content
Snippets Groups Projects
Commit f5ce5cef authored by Pavel Antonov's avatar Pavel Antonov :asterisk:
Browse files

Исправлена ошибка валидации при попытке сохранить элемент коллекции, если не...

Исправлена ошибка валидации при попытке сохранить элемент коллекции, если не заполнить значение в строковом поле, для которого задана настройка длины в схеме
parents e2c376b8 dd60bc58
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,9 @@ func MaxLength(max int) Validator {
}
func (t maxLength) Validate(_ context.Context, field *field.Field, value interface{}) error {
if value == nil {
return nil
}
if s, ok := value.(string); ok {
n := utf8.RuneCountInString(s)
if t > 0 && n > int(t) {
......@@ -36,6 +39,9 @@ func MinLength(max int) Validator {
}
func (t minLength) Validate(_ context.Context, field *field.Field, value interface{}) error {
if value == nil {
return nil
}
if s, ok := value.(string); ok {
n := utf8.RuneCountInString(s)
if n < int(t) {
......
......@@ -92,9 +92,15 @@ func TestString(t *testing.T) {
wantErr bool
}{
{"Length Max", field.String().AddOptions(MaxLength(5)), "1234567", true},
{"Length Max with <nil>", field.String().AddOptions(MaxLength(5)), nil, false},
{"Length Max and Required with <nil>", field.String().AddOptions(MaxLength(5), Required()), nil, true},
{"Length Min", field.String().AddOptions(MinLength(10)), "1234", true},
{"Length Min with <nil>", field.String().AddOptions(MinLength(10)), nil, false},
{"Length Min and Required with <nil>", field.String().AddOptions(MinLength(10), Required()), nil, true},
{"Length MinMax", field.String().AddOptions(MaxLength(6), MinLength(2)), "1234567", true},
{"Length MinMax", field.String().AddOptions(MaxLength(10), MinLength(7)), "123456", true},
{"Length MinMax with <nil>", field.String().AddOptions(MaxLength(10), MinLength(7)), nil, false},
{"Length MinMax and Required with <nil>", field.String().AddOptions(MaxLength(10), MinLength(7), Required()), nil, true},
{"Enum miss", field.String().AddOptions(Enum(EnumOpt{Name: "N 1", Value: "n1"}, EnumOpt{Name: "N 2", Value: "n2"})), "n3", true},
{"Enum match", field.String().AddOptions(Enum(EnumOpt{Name: "N 1", Value: "n1"}, EnumOpt{Name: "N 2", Value: "n2"})), "n2", false},
{"Invalid Schema Options", field.String().AddOptions(Schema()), invalidOptionsSchema, true},
......@@ -129,8 +135,6 @@ func TestStringValidate(t *testing.T) {
}{
{"String Length Max", field.String().AddOptions(MaxLength(1)), "1", false, ""},
{"String Length Min", field.String().AddOptions(MinLength(1)), "1", false, ""},
{"Nil Length Max", field.String().AddOptions(MaxLength(1)), nil, true, "validation error: incorrect type: \"invalid\", expected \"string\""},
{"Nil Length Min", field.String().AddOptions(MinLength(1)), nil, true, "validation error: incorrect type: \"invalid\", expected \"string\""},
{"Int Length Max", field.String().AddOptions(MaxLength(1)), 1, true, "validation error: incorrect type: \"int\", expected \"string\""},
{"Int Length Min", field.String().AddOptions(MinLength(1)), 1, true, "validation error: incorrect type: \"int\", expected \"string\""},
{"Float Length Max", field.String().AddOptions(MaxLength(1)), 1.0, true, "validation error: incorrect type: \"float64\", expected \"string\""},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment