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