GildedRose-Refactoring-Kata/go/api/controllers/controllers_test.go
2023-07-11 22:52:14 +01:00

45 lines
1.2 KiB
Go

package controllers
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/require"
"go.uber.org/fx"
"go.uber.org/fx/fxtest"
"github.com/emilybache/gildedrose-refactoring-kata/lib"
"github.com/emilybache/gildedrose-refactoring-kata/services"
"github.com/emilybache/gildedrose-refactoring-kata/api/middlewares"
)
var TestCommonModules = fx.Options(
Module,
lib.Module,
services.Module,
middlewares.Module,
)
type TestCaseRunner interface{}
func setupTestCase(handler lib.RequestHandler, logger lib.Logger, itemController ItemController, swaggerController SwaggerController) {
logger.Info("Setup test case")
swaggerController.Setup(handler.Gin)
itemController.Setup(handler.Gin)
}
func runTestCase(t *testing.T, runner TestCaseRunner) {
app := fxtest.New(t, TestCommonModules, fx.Invoke(setupTestCase), fx.Invoke(runner))
defer app.RequireStart().RequireStop()
require.NoError(t, app.Err())
}
func executeRequest(handler lib.RequestHandler, req *http.Request) *httptest.ResponseRecorder {
result := httptest.NewRecorder()
handler.Gin.ServeHTTP(result, req)
return result
}