51 lines
1.2 KiB
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()
|
|
}
|