From 835464d2710f195c6f642025bbe5b30c47a29a3b Mon Sep 17 00:00:00 2001 From: "Zeewell.Yu" Date: Tue, 9 Jul 2024 11:39:43 +0800 Subject: [PATCH] tests: Add test for omitzero --- validator_test.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/validator_test.go b/validator_test.go index 0f96b7775..ad84c86a7 100644 --- a/validator_test.go +++ b/validator_test.go @@ -13900,6 +13900,57 @@ func TestOmitNilAndRequired(t *testing.T) { }) } +func TestOmitZero(t *testing.T) { + type ( + OmitEmpty struct { + Str string `validate:"omitempty,min=10"` + StrPtr *string `validate:"omitempty,min=10"` + } + OmitZero struct { + Str string `validate:"omitzero,min=10"` + StrPtr *string `validate:"omitzero,min=10"` + } + ) + + var ( + validate = New() + valid = "this is the long string to pass the validation rule" + empty = "" + ) + + t.Run("compare using valid data", func(t *testing.T) { + err1 := validate.Struct(OmitEmpty{Str: valid, StrPtr: &valid}) + err2 := validate.Struct(OmitZero{Str: valid, StrPtr: &valid}) + + Equal(t, err1, nil) + Equal(t, err2, nil) + }) + + t.Run("compare fully empty omitempty and omitzero", func(t *testing.T) { + err1 := validate.Struct(OmitEmpty{}) + err2 := validate.Struct(OmitZero{}) + + Equal(t, err1, nil) + Equal(t, err2, nil) + }) + + t.Run("compare with zero value", func(t *testing.T) { + err1 := validate.Struct(OmitEmpty{Str: "", StrPtr: nil}) + err2 := validate.Struct(OmitZero{Str: "", StrPtr: nil}) + + Equal(t, err1, nil) + Equal(t, err2, nil) + }) + + t.Run("compare with empty value", func(t *testing.T) { + err1 := validate.Struct(OmitEmpty{Str: empty, StrPtr: &empty}) + err2 := validate.Struct(OmitZero{Str: empty, StrPtr: &empty}) + + AssertError(t, err1, "OmitEmpty.StrPtr", "OmitEmpty.StrPtr", "StrPtr", "StrPtr", "min") + Equal(t, err2, nil) + }) +} + func TestPrivateFieldsStruct(t *testing.T) { type tc struct { stct interface{}