123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- package valid
- import (
- "errors"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestNewInternalError(t *testing.T) {
- err := NewInternalError(errors.New("abc"))
- if assert.NotNil(t, err.InternalError()) {
- assert.Equal(t, "abc", err.InternalError().Error())
- }
- }
- func TestErrors_Error(t *testing.T) {
- errs := Errors{
- "B": errors.New("B1"),
- "C": errors.New("C1"),
- "A": errors.New("A1"),
- }
- assert.Equal(t, "A: A1; B: B1; C: C1.", errs.Error())
- errs = Errors{
- "B": errors.New("B1"),
- }
- assert.Equal(t, "B: B1.", errs.Error())
- errs = Errors{}
- assert.Equal(t, "", errs.Error())
- }
- func TestErrors_MarshalMessage(t *testing.T) {
- errs := Errors{
- "A": errors.New("A1"),
- "B": Errors{
- "2": errors.New("B1"),
- },
- }
- errsJSON, err := errs.MarshalJSON()
- assert.Nil(t, err)
- assert.Equal(t, "{\"A\":\"A1\",\"B\":{\"2\":\"B1\"}}", string(errsJSON))
- }
- func TestErrors_Filter(t *testing.T) {
- errs := Errors{
- "B": errors.New("B1"),
- "C": nil,
- "A": errors.New("A1"),
- }
- err := errs.Filter()
- assert.Equal(t, 2, len(errs))
- if assert.NotNil(t, err) {
- assert.Equal(t, "A: A1; B: B1.", err.Error())
- }
- errs = Errors{}
- assert.Nil(t, errs.Filter())
- errs = Errors{
- "B": nil,
- "C": nil,
- }
- assert.Nil(t, errs.Filter())
- }
- func TestErrorObject_SetCode(t *testing.T) {
- err := NewError("A", "msg").(ErrorObject)
- assert.Equal(t, err.code, "A")
- assert.Equal(t, err.Code(), "A")
- err = err.SetCode("B").(ErrorObject)
- assert.Equal(t, "B", err.code)
- }
- func TestErrorObject_Code(t *testing.T) {
- err := NewError("A", "msg").(ErrorObject)
- assert.Equal(t, err.Code(), "A")
- }
- func TestErrorObject_SetMessage(t *testing.T) {
- err := NewError("code", "A").(ErrorObject)
- assert.Equal(t, err.message, "A")
- assert.Equal(t, err.Message(), "A")
- err = err.SetMessage("abc").(ErrorObject)
- assert.Equal(t, err.message, "abc")
- assert.Equal(t, err.Message(), "abc")
- }
- func TestErrorObject_Message(t *testing.T) {
- err := NewError("code", "A").(ErrorObject)
- assert.Equal(t, err.message, "A")
- assert.Equal(t, err.Message(), "A")
- }
- func TestErrorObject_Params(t *testing.T) {
- p := map[string]interface{}{"A": "val1", "AA": "val2"}
- err := NewError("code", "A").(ErrorObject)
- err = err.SetParams(p).(ErrorObject)
- err = err.SetMessage("B").(ErrorObject)
- assert.Equal(t, err.params, p)
- assert.Equal(t, err.Params(), p)
- }
- func TestErrorObject_AddParam(t *testing.T) {
- t.Run("case1", func(t *testing.T) {
- p := map[string]interface{}{"A": "val1", "B": "val2"}
- err := NewError("code", "A").(ErrorObject)
- err = err.SetParams(p).(ErrorObject)
- err = err.AddParam("C", "val3").(ErrorObject)
- p["C"] = "val3"
- assert.Equal(t, err.params, p)
- assert.Equal(t, err.Params(), p)
- })
- t.Run("case2", func(t *testing.T) {
- p := map[string]interface{}{"key": "val"}
- err := NewError("code", "A").(ErrorObject)
- err = err.AddParam("key", "val").(ErrorObject)
- assert.Equal(t, err.params, p)
- assert.Equal(t, err.Params(), p)
- })
- }
- func TestError_Code(t *testing.T) {
- err := NewError("A", "msg")
- assert.Equal(t, err.Code(), "A")
- }
- func TestError_SetMessage(t *testing.T) {
- err := NewError("code", "A")
- assert.Equal(t, err.Message(), "A")
- err = err.SetMessage("abc")
- assert.Equal(t, err.Message(), "abc")
- }
- func TestError_Message(t *testing.T) {
- err := NewError("code", "A")
- assert.Equal(t, err.Message(), "A")
- }
- func TestError_Params(t *testing.T) {
- p := map[string]interface{}{"A": "val1", "AA": "val2"}
- err := NewError("code", "A")
- err = err.SetParams(p)
- err = err.SetMessage("B")
- assert.Equal(t, err.Params(), p)
- }
- func TestValidationError(t *testing.T) {
- params := map[string]interface{}{
- "A": "B",
- }
- err := NewError("code", "msg")
- err = err.SetParams(params)
- assert.Equal(t, err.Code(), "code")
- assert.Equal(t, err.Message(), "msg")
- assert.Equal(t, err.Params(), params)
- params = map[string]interface{}{"min": 1}
- err = err.SetParams(params)
- assert.Equal(t, err.Params(), params)
- }
|