| // Copyright 2016 Qiang Xue. All rights reserved. |
| // Use of this source code is governed by a MIT-style |
| // license that can be found in the LICENSE file. |
| |
| package validation |
| |
| import ( |
| "testing" |
| |
| "github.com/stretchr/testify/assert" |
| ) |
| |
| func TestRequired(t *testing.T) { |
| s1 := "123" |
| s2 := "" |
| tests := []struct { |
| tag string |
| value interface{} |
| err string |
| }{ |
| {"t1", 123, ""}, |
| {"t2", "", "cannot be blank"}, |
| {"t3", &s1, ""}, |
| {"t4", &s2, "cannot be blank"}, |
| {"t5", nil, "cannot be blank"}, |
| } |
| |
| for _, test := range tests { |
| r := Required |
| err := r.Validate(test.value) |
| assertError(t, test.err, err, test.tag) |
| } |
| } |
| |
| func TestNilOrNotEmpty(t *testing.T) { |
| s1 := "123" |
| s2 := "" |
| tests := []struct { |
| tag string |
| value interface{} |
| err string |
| }{ |
| {"t1", 123, ""}, |
| {"t2", "", "cannot be blank"}, |
| {"t3", &s1, ""}, |
| {"t4", &s2, "cannot be blank"}, |
| {"t5", nil, ""}, |
| } |
| |
| for _, test := range tests { |
| r := NilOrNotEmpty |
| err := r.Validate(test.value) |
| assertError(t, test.err, err, test.tag) |
| } |
| } |
| |
| func Test_requiredRule_Error(t *testing.T) { |
| r := Required |
| assert.Equal(t, "cannot be blank", r.message) |
| assert.False(t, r.skipNil) |
| r2 := r.Error("123") |
| assert.Equal(t, "cannot be blank", r.message) |
| assert.False(t, r.skipNil) |
| assert.Equal(t, "123", r2.message) |
| assert.False(t, r2.skipNil) |
| |
| r = NilOrNotEmpty |
| assert.Equal(t, "cannot be blank", r.message) |
| assert.True(t, r.skipNil) |
| r2 = r.Error("123") |
| assert.Equal(t, "cannot be blank", r.message) |
| assert.True(t, r.skipNil) |
| assert.Equal(t, "123", r2.message) |
| assert.True(t, r2.skipNil) |
| } |