Minor test improvements

This commit is contained in:
Dan Jones 2025-07-08 11:32:06 -05:00
commit 18d987caf7
3 changed files with 59 additions and 50 deletions

View file

@ -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)
}