Skip to content
Snippets Groups Projects
Commit 8e88b257 authored by ko_oler's avatar ko_oler
Browse files

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

Исправлена ошибка валидации при попытке сохранить элемент коллекции, если не заполнить значение в строковом поле, для которого задана настройка длины в схеме
parent 30b5e866
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,12 @@ 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 Min", field.String().AddOptions(MinLength(10)), "1234", true},
{"Length Min with <nil>", field.String().AddOptions(MinLength(10)), nil, false},
{"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},
{"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},
......
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