From 341bcc4a0ea45f9f4582ae7fa986ca9dc9d8e4e2 Mon Sep 17 00:00:00 2001 From: Gani Georgiev Date: Thu, 17 Nov 2022 22:06:31 +0200 Subject: [PATCH] skip number validator on zero-default --- forms/validators/record_data.go | 8 ++++---- forms/validators/record_data_test.go | 11 ++++++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/forms/validators/record_data.go b/forms/validators/record_data.go index 106b0404..e830d6a3 100644 --- a/forms/validators/record_data.go +++ b/forms/validators/record_data.go @@ -135,7 +135,7 @@ func (validator *RecordDataValidator) checkFieldValue(field *schema.SchemaField, func (validator *RecordDataValidator) checkTextValue(field *schema.SchemaField, value any) error { val, _ := value.(string) if val == "" { - return nil // nothing to check + return nil // nothing to check (skip zero-defaults) } options, _ := field.Options.(*schema.TextOptions) @@ -159,11 +159,11 @@ func (validator *RecordDataValidator) checkTextValue(field *schema.SchemaField, } func (validator *RecordDataValidator) checkNumberValue(field *schema.SchemaField, value any) error { - if value == nil { - return nil // nothing to check + val, _ := value.(float64) + if val == 0 { + return nil // nothing to check (skip zero-defaults) } - val, _ := value.(float64) options, _ := field.Options.(*schema.NumberOptions) if options.Min != nil && val < *options.Min { diff --git a/forms/validators/record_data_test.go b/forms/validators/record_data_test.go index a3d552a7..778dceeb 100644 --- a/forms/validators/record_data_test.go +++ b/forms/validators/record_data_test.go @@ -168,7 +168,7 @@ func TestRecordDataValidatorValidateNumber(t *testing.T) { // create new test collection collection := &models.Collection{} collection.Name = "validate_test" - min := 0.0 + min := 2.0 max := 150.0 collection.Schema = schema.NewSchema( &schema.SchemaField{ @@ -244,6 +244,15 @@ func TestRecordDataValidatorValidateNumber(t *testing.T) { nil, []string{"field3"}, }, + { + "(number) check min with zero-default", + map[string]any{ + "field2": 1, + "field3": 0, + }, + nil, + []string{}, + }, { "(number) check max constraint", map[string]any{