✅ Minor test improvements
This commit is contained in:
parent
1c16a893d6
commit
18d987caf7
3 changed files with 59 additions and 50 deletions
|
|
@ -10,17 +10,31 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
var (
|
||||
errTest = errors.New("test error")
|
||||
var errTest = errors.New("test error")
|
||||
|
||||
type handlerType string
|
||||
|
||||
const (
|
||||
handlerT handlerType = "Handler"
|
||||
handlerFuncT handlerType = "HandlerFunc"
|
||||
respHandlerT handlerType = "ResponseHandler"
|
||||
)
|
||||
|
||||
type testHandler struct {
|
||||
err error
|
||||
}
|
||||
|
||||
func (th testHandler) ServeHTTP(http.ResponseWriter, *http.Request) error {
|
||||
return th.err
|
||||
}
|
||||
|
||||
func TestNewHelper(t *testing.T) {
|
||||
mockErrorHandler := func(w http.ResponseWriter, r *http.Request, err error) {}
|
||||
helper := ezhandler.NewHelper(mockErrorHandler)
|
||||
assert.NotNil(t, helper)
|
||||
}
|
||||
|
||||
func runHelperTest(t *testing.T, name string, handlerErr, expectedErr error, expectedErrorHandlerCalled bool, handlerType string) {
|
||||
func runHelperTest(t *testing.T, name string, handlerErr, expectedErr error, expectedErrorHandlerCalled bool, ht handlerType) {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
var errorHandlerCalled bool
|
||||
mockErrorHandler := func(w http.ResponseWriter, r *http.Request, err error) {
|
||||
|
|
@ -33,18 +47,16 @@ func runHelperTest(t *testing.T, name string, handlerErr, expectedErr error, exp
|
|||
rec := httptest.NewRecorder()
|
||||
|
||||
var wrappedHandler http.Handler
|
||||
switch handlerType {
|
||||
case "Handler":
|
||||
mockHandler := ezhandler.HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
|
||||
return handlerErr
|
||||
})
|
||||
switch ht {
|
||||
case handlerT:
|
||||
mockHandler := testHandler{handlerErr}
|
||||
wrappedHandler = helper.Handler(mockHandler)
|
||||
case "HandlerFunc":
|
||||
case handlerFuncT:
|
||||
mockHandlerFunc := ezhandler.HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
|
||||
return handlerErr
|
||||
})
|
||||
wrappedHandler = helper.HandlerFunc(mockHandlerFunc)
|
||||
case "ResponderHandler":
|
||||
case respHandlerT:
|
||||
mockResponseHandler := ezhandler.ResponseHandler(func(r *http.Request) (ezhandler.ResponseHelper, error) {
|
||||
if handlerErr != nil {
|
||||
return nil, handlerErr
|
||||
|
|
@ -52,6 +64,8 @@ func runHelperTest(t *testing.T, name string, handlerErr, expectedErr error, exp
|
|||
return ezhandler.JSONResponse(map[string]string{"status": "ok"}), nil
|
||||
})
|
||||
wrappedHandler = helper.ResponderHandler(mockResponseHandler)
|
||||
default:
|
||||
assert.Fail(t, "Unknown test type: "+string(ht))
|
||||
}
|
||||
|
||||
wrappedHandler.ServeHTTP(rec, req)
|
||||
|
|
@ -61,16 +75,16 @@ func runHelperTest(t *testing.T, name string, handlerErr, expectedErr error, exp
|
|||
}
|
||||
|
||||
func TestHelper_Handler(t *testing.T) {
|
||||
runHelperTest(t, "no error", nil, nil, false, "Handler")
|
||||
runHelperTest(t, "with error", errTest, errTest, true, "Handler")
|
||||
runHelperTest(t, "no error", nil, nil, false, handlerT)
|
||||
runHelperTest(t, "with error", errTest, errTest, true, handlerT)
|
||||
}
|
||||
|
||||
func TestHelper_HandlerFunc(t *testing.T) {
|
||||
runHelperTest(t, "no error", nil, nil, false, "HandlerFunc")
|
||||
runHelperTest(t, "with error", errTest, errTest, true, "HandlerFunc")
|
||||
runHelperTest(t, "no error", nil, nil, false, handlerFuncT)
|
||||
runHelperTest(t, "with error", errTest, errTest, true, handlerFuncT)
|
||||
}
|
||||
|
||||
func TestHelper_ResponderHandler(t *testing.T) {
|
||||
runHelperTest(t, "no error", nil, nil, false, "ResponderHandler")
|
||||
runHelperTest(t, "with error", errTest, errTest, true, "ResponderHandler")
|
||||
runHelperTest(t, "no error", nil, nil, false, respHandlerT)
|
||||
runHelperTest(t, "with error", errTest, errTest, true, respHandlerT)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue