github.heygears.com/openimsdk/tools@v0.0.49/checker/check_test.go (about) 1 package checker_test 2 3 import ( 4 "testing" 5 6 "github.com/openimsdk/tools/checker" 7 "github.com/openimsdk/tools/errs" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 type mockChecker struct { 12 err error 13 } 14 15 func (m mockChecker) Check() error { 16 return m.err 17 } 18 19 func TestValidate(t *testing.T) { 20 tests := []struct { 21 name string 22 arg any 23 wantError error 24 }{ 25 { 26 name: "non-checker argument", 27 arg: "non-checker", 28 wantError: nil, 29 }, 30 { 31 name: "checker with no error", 32 arg: mockChecker{nil}, 33 wantError: nil, 34 }, 35 { 36 name: "checker with generic error", 37 arg: mockChecker{errs.New("generic error")}, 38 wantError: errs.ErrArgs, 39 }, 40 { 41 name: "checker with CodeError", 42 arg: mockChecker{errs.NewCodeError(400, "bad request")}, 43 wantError: errs.NewCodeError(400, "bad request"), 44 }, 45 } 46 47 for _, tt := range tests { 48 t.Run(tt.name, func(t *testing.T) { 49 err := checker.Validate(tt.arg) 50 if tt.wantError != nil { 51 assert.ErrorIs(t, err, tt.wantError) 52 } else { 53 assert.NoError(t, err) 54 } 55 }) 56 } 57 }