mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package controllers
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
//"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"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) {
|
|
logger.Info("Setup test case")
|
|
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
|
|
}
|
|
|
|
func TestStatus(t *testing.T) {
|
|
runTestCase(t, func(
|
|
handler lib.RequestHandler,
|
|
) {
|
|
req, _ := http.NewRequest("GET", "/status", nil)
|
|
|
|
w := executeRequest(handler, req)
|
|
assert.Equal(t, 200, w.Code)
|
|
assert.Equal(t, `{"status":"ok"}`, w.Body.String())
|
|
})
|
|
}
|