core/internal/port/handler_http_api_test.go

51 lines
1.2 KiB
Go

package port_test
import (
"io"
"net/http"
"net/http/httptest"
"testing"
"gitea.dwysokinski.me/twhelp/corev3/internal/adapter"
"gitea.dwysokinski.me/twhelp/corev3/internal/app"
"gitea.dwysokinski.me/twhelp/corev3/internal/bun/buntest"
"gitea.dwysokinski.me/twhelp/corev3/internal/port"
)
type apiHTTPHandlerConfig struct {
options []port.APIHTTPHandlerOption
}
func newAPIHTTPHandler(tb testing.TB, opts ...func(cfg *apiHTTPHandlerConfig)) http.Handler {
tb.Helper()
cfg := &apiHTTPHandlerConfig{}
for _, opt := range opts {
opt(cfg)
}
db := buntest.NewSQLiteDB(tb)
versionRepo := adapter.NewVersionBunRepository(db)
serverRepo := adapter.NewServerBunRepository(db)
tribeRepo := adapter.NewTribeBunRepository(db)
return port.NewAPIHTTPHandler(
app.NewVersionService(versionRepo),
app.NewServerService(serverRepo, nil, nil),
app.NewTribeService(tribeRepo, nil, nil),
cfg.options...,
)
}
func doRequest(h http.Handler, method, target string, body io.Reader) *http.Response {
return doCustomRequest(h, httptest.NewRequest(method, target, body))
}
func doCustomRequest(h http.Handler, r *http.Request) *http.Response {
rr := httptest.NewRecorder()
h.ServeHTTP(rr, r)
return rr.Result()
}