From dd3b594f69868b249beb3d832aeeb519e90a46dd Mon Sep 17 00:00:00 2001 From: Jahanvi Aggarwal Date: Sun, 10 Jul 2022 18:47:32 +0530 Subject: [PATCH] Adding Support for SkipUnless validator and testing the same --- baked_in.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/baked_in.go b/baked_in.go index 9dc968c..fca1225 100644 --- a/baked_in.go +++ b/baked_in.go @@ -1610,35 +1610,35 @@ func requiredUnless(fl FieldLevel) bool { return hasValue(fl) } -// skipUnless is the validation function -// The field under validation must be present and not empty only unless all the other specified fields are equal to the value following with the specified field. -func skipUnless(fl FieldLevel) bool { +// excludedUnless is the validation function +// The field under validation must not be present or is empty unless all the other specified fields are equal to the value following with the specified field. +func excludedUnless(fl FieldLevel) bool { params := parseOneOfParam2(fl.Param()) if len(params)%2 != 0 { - panic(fmt.Sprintf("Bad param number for skip_unless %s", fl.FieldName())) + panic(fmt.Sprintf("Bad param number for excluded_unless %s", fl.FieldName())) } - for i := 0; i < len(params); i += 2 { if !requireCheckFieldValue(fl, params[i], params[i+1], false) { return true } } - return hasValue(fl) + return !hasValue(fl) } -// excludedUnless is the validation function -// The field under validation must not be present or is empty unless all the other specified fields are equal to the value following with the specified field. -func excludedUnless(fl FieldLevel) bool { +// skipUnless is the validation function +// The field under validation must be present and not empty only unless all the other specified fields are equal to the value following with the specified field. +func skipUnless(fl FieldLevel) bool { params := parseOneOfParam2(fl.Param()) if len(params)%2 != 0 { - panic(fmt.Sprintf("Bad param number for excluded_unless %s", fl.FieldName())) + panic(fmt.Sprintf("Bad param number for skip_unless %s", fl.FieldName())) } + for i := 0; i < len(params); i += 2 { if !requireCheckFieldValue(fl, params[i], params[i+1], false) { return true } } - return !hasValue(fl) + return hasValue(fl) } // excludedWith is the validation function