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  }