From e5779183fffe7ca78b0fbc46dd6d69ba2dfa98fb Mon Sep 17 00:00:00 2001 From: Kharec Date: Mon, 12 Jan 2026 22:49:17 +0100 Subject: [PATCH] test: cover json tag display and whitespace required case --- internal/validation/validation_test.go | 29 ++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/internal/validation/validation_test.go b/internal/validation/validation_test.go index a4806b5..24f01cf 100644 --- a/internal/validation/validation_test.go +++ b/internal/validation/validation_test.go @@ -250,12 +250,12 @@ func TestSanitizeString(t *testing.T) { func TestValidateStruct(t *testing.T) { type TestStruct struct { - Username string `validate:"required,min=3,max=20"` - Email string `validate:"required,email"` - Age int `validate:"min=18,max=120"` - URL string `validate:"url"` - Status string `validate:"oneof=active inactive pending"` - Optional string `validate:"omitempty,min=1"` + Username string `json:"username" validate:"required,min=3,max=20"` + Email string `json:"email" validate:"required,email"` + Age int `json:"age" validate:"min=18,max=120"` + URL string `json:"url" validate:"url"` + Status string `json:"status" validate:"oneof=active inactive pending"` + Optional string `json:"optional" validate:"omitempty,min=1"` } t.Run("valid struct", func(t *testing.T) { @@ -287,6 +287,9 @@ func TestValidateStruct(t *testing.T) { if len(structErr.Errors) == 0 { t.Error("Expected validation errors, got none") } + if structErr.Errors[0].Message != "username is required" { + t.Errorf("Expected JSON tag name in error, got %q", structErr.Errors[0].Message) + } } }) @@ -318,6 +321,20 @@ func TestValidateStruct(t *testing.T) { } }) + t.Run("whitespace required field", func(t *testing.T) { + s := TestStruct{ + Username: " ", + Email: "test@example.com", + Age: 25, + URL: "https://example.com", + Status: "active", + } + err := ValidateStruct(s) + if err == nil { + t.Error("ValidateStruct() expected error, got nil") + } + }) + t.Run("invalid max", func(t *testing.T) { s := TestStruct{ Username: strings.Repeat("a", 21),