Fix for #310
This commit is contained in:
		| @ -6,6 +6,7 @@ package binding | ||||
|  | ||||
| import ( | ||||
| 	"net/http" | ||||
| 	"reflect" | ||||
|  | ||||
| 	"gopkg.in/bluesuncorp/validator.v5" | ||||
| ) | ||||
| @ -56,8 +57,20 @@ func ValidateField(f interface{}, tag string) error { | ||||
| } | ||||
|  | ||||
| func Validate(obj interface{}) error { | ||||
| 	if kindOfData(obj) != reflect.Struct { | ||||
| 		return nil | ||||
| 	} | ||||
| 	if err := validate.Struct(obj); err != nil { | ||||
| 		return error(err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func kindOfData(data interface{}) reflect.Kind { | ||||
| 	value := reflect.ValueOf(data) | ||||
| 	valueType := value.Kind() | ||||
| 	if valueType == reflect.Ptr { | ||||
| 		valueType = value.Elem().Kind() | ||||
| 	} | ||||
| 	return valueType | ||||
| } | ||||
|  | ||||
| @ -51,3 +51,19 @@ func TestValidateGoodObject(t *testing.T) { | ||||
| 	test := createStruct() | ||||
| 	assert.Nil(t, Validate(&test)) | ||||
| } | ||||
|  | ||||
| type Object map[string]interface{} | ||||
| type MyObjects []Object | ||||
|  | ||||
| func TestValidateSlice(t *testing.T) { | ||||
| 	var obj MyObjects | ||||
| 	var obj2 Object | ||||
| 	var nu = 10 | ||||
|  | ||||
| 	assert.NoError(t, Validate(obj)) | ||||
| 	assert.NoError(t, Validate(&obj)) | ||||
| 	assert.NoError(t, Validate(obj2)) | ||||
| 	assert.NoError(t, Validate(&obj2)) | ||||
| 	assert.NoError(t, Validate(nu)) | ||||
| 	assert.NoError(t, Validate(&nu)) | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user