Skip to content

Commit 689d3e9

Browse files
joeybloggsjoeybloggs
authored andcommitted
finalized array error handling
for #78
1 parent 1ba858e commit 689d3e9

File tree

2 files changed

+47
-70
lines changed

2 files changed

+47
-70
lines changed

validator.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,21 +209,14 @@ func (e *StructErrors) Error() string {
209209

210210
for _, err := range e.Errors {
211211
buff.WriteString(err.Error())
212+
buff.WriteString("\n")
212213
}
213214

214-
var i uint64
215-
216215
for _, err := range e.StructErrors {
217-
218-
if i != 0 {
219-
buff.WriteString("\n")
220-
}
221-
222216
buff.WriteString(err.Error())
223-
i++
224217
}
225218

226-
return buff.String()
219+
return strings.TrimSpace(buff.String())
227220
}
228221

229222
// Flatten flattens the StructErrors hierarchical structure into a flat namespace style field name

validator_test.go

Lines changed: 45 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -231,49 +231,49 @@ func TestMapDiveValidation(t *testing.T) {
231231

232232
func TestArrayDiveValidation(t *testing.T) {
233233

234-
// type Test struct {
235-
// Errs []string `validate:"gt=0,dive,required"`
236-
// }
237-
238-
// test := &Test{
239-
// Errs: []string{"ok", "", "ok"},
240-
// }
241-
242-
// errs := validate.Struct(test)
243-
// NotEqual(t, errs, nil)
244-
// Equal(t, len(errs.Errors), 1)
245-
246-
// fieldErr, ok := errs.Errors["Errs"]
247-
// Equal(t, ok, true)
248-
// Equal(t, fieldErr.IsPlaceholderErr, true)
249-
// Equal(t, fieldErr.IsSliceOrArray, true)
250-
// Equal(t, len(fieldErr.SliceOrArrayErrs), 1)
251-
252-
// innerErr, ok := fieldErr.SliceOrArrayErrs[1].(*FieldError)
253-
// Equal(t, ok, true)
254-
// Equal(t, innerErr.Tag, required)
255-
// Equal(t, innerErr.IsPlaceholderErr, false)
256-
// Equal(t, innerErr.Field, "Errs")
257-
258-
// test = &Test{
259-
// Errs: []string{"ok", "ok", ""},
260-
// }
261-
262-
// errs = validate.Struct(test)
263-
// NotEqual(t, errs, nil)
264-
// Equal(t, len(errs.Errors), 1)
265-
266-
// fieldErr, ok = errs.Errors["Errs"]
267-
// Equal(t, ok, true)
268-
// Equal(t, fieldErr.IsPlaceholderErr, true)
269-
// Equal(t, fieldErr.IsSliceOrArray, true)
270-
// Equal(t, len(fieldErr.SliceOrArrayErrs), 1)
271-
272-
// innerErr, ok = fieldErr.SliceOrArrayErrs[2].(*FieldError)
273-
// Equal(t, ok, true)
274-
// Equal(t, innerErr.Tag, required)
275-
// Equal(t, innerErr.IsPlaceholderErr, false)
276-
// Equal(t, innerErr.Field, "Errs")
234+
type Test struct {
235+
Errs []string `validate:"gt=0,dive,required"`
236+
}
237+
238+
test := &Test{
239+
Errs: []string{"ok", "", "ok"},
240+
}
241+
242+
errs := validate.Struct(test)
243+
NotEqual(t, errs, nil)
244+
Equal(t, len(errs.Errors), 1)
245+
246+
fieldErr, ok := errs.Errors["Errs"]
247+
Equal(t, ok, true)
248+
Equal(t, fieldErr.IsPlaceholderErr, true)
249+
Equal(t, fieldErr.IsSliceOrArray, true)
250+
Equal(t, len(fieldErr.SliceOrArrayErrs), 1)
251+
252+
innerErr, ok := fieldErr.SliceOrArrayErrs[1].(*FieldError)
253+
Equal(t, ok, true)
254+
Equal(t, innerErr.Tag, required)
255+
Equal(t, innerErr.IsPlaceholderErr, false)
256+
Equal(t, innerErr.Field, "Errs[1]")
257+
258+
test = &Test{
259+
Errs: []string{"ok", "ok", ""},
260+
}
261+
262+
errs = validate.Struct(test)
263+
NotEqual(t, errs, nil)
264+
Equal(t, len(errs.Errors), 1)
265+
266+
fieldErr, ok = errs.Errors["Errs"]
267+
Equal(t, ok, true)
268+
Equal(t, fieldErr.IsPlaceholderErr, true)
269+
Equal(t, fieldErr.IsSliceOrArray, true)
270+
Equal(t, len(fieldErr.SliceOrArrayErrs), 1)
271+
272+
innerErr, ok = fieldErr.SliceOrArrayErrs[2].(*FieldError)
273+
Equal(t, ok, true)
274+
Equal(t, innerErr.Tag, required)
275+
Equal(t, innerErr.IsPlaceholderErr, false)
276+
Equal(t, innerErr.Field, "Errs[2]")
277277

278278
type TestMultiDimensional struct {
279279
Errs [][]string `validate:"gt=0,dive,dive,required"`
@@ -283,25 +283,17 @@ func TestArrayDiveValidation(t *testing.T) {
283283

284284
errArray = append(errArray, []string{"ok", "", ""})
285285
errArray = append(errArray, []string{"ok", "", ""})
286-
// fmt.Println(len(errArray))
287-
// errArray = append(errArray, []string{"", "ok", "ok"})
288-
// errArray = append(errArray, []string{"", "", "ok"})
289-
// errArray = append(errArray, []string{"", "", "ok"})
290286

291287
tm := &TestMultiDimensional{
292288
Errs: errArray,
293289
}
294290

295-
errs := validate.Struct(tm)
296-
fmt.Println(errs)
297-
// validate.Struct(tm)
298-
299-
// fmt.Printf("%#v\n", errs.Errors["Errs"].SliceOrArrayErrs)
291+
errs = validate.Struct(tm)
300292

301293
NotEqual(t, errs, nil)
302294
Equal(t, len(errs.Errors), 1)
303295

304-
fieldErr, ok := errs.Errors["Errs"]
296+
fieldErr, ok = errs.Errors["Errs"]
305297
Equal(t, ok, true)
306298
Equal(t, fieldErr.IsPlaceholderErr, true)
307299
Equal(t, fieldErr.IsSliceOrArray, true)
@@ -319,14 +311,6 @@ func TestArrayDiveValidation(t *testing.T) {
319311
Equal(t, innerSliceError1.Tag, required)
320312
Equal(t, innerSliceError1.IsSliceOrArray, false)
321313
Equal(t, len(innerSliceError1.SliceOrArrayErrs), 0)
322-
// fmt.Println(fieldErr.SliceOrArrayErrs)
323-
324-
// Equal(t, fieldErr.IsPlaceholderErr, true)
325-
// Equal(t, fieldErr.IsSliceOrArray, true)
326-
// Equal(t, len(fieldErr.SliceOrArrayErrs), 3)
327-
328-
// fmt.Println(fieldErr.SliceOrArrayErrs)
329-
// fmt.Println(len(fieldErr.SliceOrArrayErrs))
330314
}
331315

332316
func TestNilStructPointerValidation(t *testing.T) {

0 commit comments

Comments
 (0)