Implement Handler and HandlerFunc, add comprehensive tests

This commit is contained in:
Dan Jones 2025-07-07 21:39:47 -05:00
commit a136616088
5 changed files with 138 additions and 5 deletions

View file

@ -1 +1,63 @@
package ezhandler_test
import (
"errors"
"net/http"
"net/http/httptest"
"testing"
"codeberg.org/danjones000/ezhandler"
"github.com/stretchr/testify/assert"
)
var (
errTest = errors.New("test error")
)
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) {
t.Run(name, func(t *testing.T) {
var errorHandlerCalled bool
mockErrorHandler := func(w http.ResponseWriter, r *http.Request, err error) {
errorHandlerCalled = true
assert.Equal(t, expectedErr, err)
}
helper := ezhandler.NewHelper(mockErrorHandler)
req := httptest.NewRequest(http.MethodGet, "/", http.NoBody)
rec := httptest.NewRecorder()
var wrappedHandler http.Handler
switch handlerType {
case "Handler":
mockHandler := ezhandler.HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
return handlerErr
})
wrappedHandler = helper.Handler(mockHandler)
case "HandlerFunc":
mockHandlerFunc := ezhandler.HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
return handlerErr
})
wrappedHandler = helper.HandlerFunc(mockHandlerFunc)
}
wrappedHandler.ServeHTTP(rec, req)
assert.Equal(t, expectedErrorHandlerCalled, errorHandlerCalled)
})
}
func TestHelper_Handler(t *testing.T) {
runHelperTest(t, "no error", nil, nil, false, "Handler")
runHelperTest(t, "with error", errTest, errTest, true, "Handler")
}
func TestHelper_HandlerFunc(t *testing.T) {
runHelperTest(t, "no error", nil, nil, false, "HandlerFunc")
runHelperTest(t, "with error", errTest, errTest, true, "HandlerFunc")
}