MCPcopy
hub / github.com/go-playground/validator / TestMapDiveValidation

Function TestMapDiveValidation

validator_test.go:3457–3592  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

3455}
3456
3457func TestMapDiveValidation(t *testing.T) {
3458 validate := New()
3459
3460 n := map[int]interface{}{0: nil}
3461 errs := validate.Var(n, "omitempty,required")
3462 Equal(t, errs, nil)
3463
3464 m := map[int]string{0: "ok", 3: "", 4: "ok"}
3465
3466 errs = validate.Var(m, "len=3,dive,required")
3467 NotEqual(t, errs, nil)
3468 Equal(t, len(errs.(ValidationErrors)), 1)
3469 AssertError(t, errs, "[3]", "[3]", "[3]", "[3]", "required")
3470
3471 errs = validate.Var(m, "len=2,dive,required")
3472 NotEqual(t, errs, nil)
3473 Equal(t, len(errs.(ValidationErrors)), 1)
3474 AssertError(t, errs, "", "", "", "", "len")
3475
3476 type Inner struct {
3477 Name string `validate:"required"`
3478 }
3479
3480 type TestMapStruct struct {
3481 Errs map[int]Inner `validate:"gt=0,dive"`
3482 }
3483
3484 mi := map[int]Inner{0: {"ok"}, 3: {""}, 4: {"ok"}}
3485
3486 ms := &TestMapStruct{
3487 Errs: mi,
3488 }
3489
3490 errs = validate.Struct(ms)
3491 NotEqual(t, errs, nil)
3492 Equal(t, len(errs.(ValidationErrors)), 1)
3493 AssertError(t, errs, "TestMapStruct.Errs[3].Name", "TestMapStruct.Errs[3].Name", "Name", "Name", "required")
3494
3495 // for full test coverage
3496 s := fmt.Sprint(errs.Error())
3497 NotEqual(t, s, "")
3498
3499 type TestMapInterface struct {
3500 Errs map[int]interface{} `validate:"dive"`
3501 }
3502
3503 mit := map[int]interface{}{0: Inner{"ok"}, 1: Inner{""}, 3: nil, 5: "string", 6: 33}
3504
3505 msi := &TestMapInterface{
3506 Errs: mit,
3507 }
3508
3509 errs = validate.Struct(msi)
3510 NotEqual(t, errs, nil)
3511 Equal(t, len(errs.(ValidationErrors)), 1)
3512 AssertError(t, errs, "TestMapInterface.Errs[1].Name", "TestMapInterface.Errs[1].Name", "Name", "Name", "required")
3513
3514 type TestMapTimeStruct struct {

Callers

nothing calls this directly

Calls 12

NewFunction · 0.85
AssertErrorFunction · 0.85
getErrorFunction · 0.85
VarMethod · 0.80
StructMethod · 0.80
RegisterTagNameFuncMethod · 0.80
ErrorMethod · 0.65
TagMethod · 0.65
ActualTagMethod · 0.65
FieldMethod · 0.65
StructFieldMethod · 0.65
GetMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…