mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Added API controllers tests
This commit is contained in:
parent
354c068f33
commit
bee2dc3de2
44
go/api/controllers/controllers_test.go
Normal file
44
go/api/controllers/controllers_test.go
Normal file
@ -0,0 +1,44 @@
|
||||
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
|
||||
}
|
||||
@ -2,47 +2,14 @@ package controllers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"strings"
|
||||
|
||||
"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,
|
||||
@ -54,3 +21,28 @@ func TestStatus(t *testing.T) {
|
||||
assert.Equal(t, `{"status":"ok"}`, w.Body.String())
|
||||
})
|
||||
}
|
||||
|
||||
func TestNotFound(t *testing.T) {
|
||||
runTestCase(t, func(
|
||||
handler lib.RequestHandler,
|
||||
) {
|
||||
req, _ := http.NewRequest("GET", "/notfoundurl", nil)
|
||||
|
||||
w := executeRequest(handler, req)
|
||||
assert.Equal(t, 404, w.Code)
|
||||
})
|
||||
}
|
||||
|
||||
func TestInvalidItem(t *testing.T) {
|
||||
runTestCase(t, func(
|
||||
handler lib.RequestHandler,
|
||||
) {
|
||||
req, _ := http.NewRequest("POST", "/update_quality", strings.NewReader(`
|
||||
{ "id": 1, "people": invalid
|
||||
`))
|
||||
req.Header = map[string][]string{"Content-Type": {"application/json"}}
|
||||
|
||||
w := executeRequest(handler, req)
|
||||
assert.Equal(t, 400, w.Code)
|
||||
})
|
||||
}
|
||||
|
||||
21
go/api/controllers/swagger_controller_test.go
Normal file
21
go/api/controllers/swagger_controller_test.go
Normal file
@ -0,0 +1,21 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/emilybache/gildedrose-refactoring-kata/lib"
|
||||
)
|
||||
|
||||
func TestSwagger(t *testing.T) {
|
||||
runTestCase(t, func(
|
||||
handler lib.RequestHandler,
|
||||
) {
|
||||
req, _ := http.NewRequest("GET", "/swagger/index.html", nil)
|
||||
|
||||
w := executeRequest(handler, req)
|
||||
assert.Equal(t, 404, w.Code)
|
||||
})
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user