From a5d8d2ea351526a239272d477664e7d3ca603103 Mon Sep 17 00:00:00 2001 From: mikestefanello Date: Mon, 6 Dec 2021 07:42:20 -0500 Subject: [PATCH] Easier get request controller testing. --- controllers/about_test.go | 7 ++++--- controllers/controller_test.go | 34 ++++++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/controllers/about_test.go b/controllers/about_test.go index 958d5c1..4684546 100644 --- a/controllers/about_test.go +++ b/controllers/about_test.go @@ -8,9 +8,10 @@ import ( ) func TestAbout_Get(t *testing.T) { - resp := GetRequest(t, "about") - assert.Equal(t, http.StatusOK, resp.StatusCode) - doc := GetGoqueryDoc(t, resp) + doc := getRequest(t, "about"). + assertStatusCode(http.StatusOK). + toDoc() + h1 := doc.Find("h1.title") assert.Len(t, h1.Nodes, 1) assert.Equal(t, "About", h1.Text()) diff --git a/controllers/controller_test.go b/controllers/controller_test.go index 3abcd46..5a3ddcf 100644 --- a/controllers/controller_test.go +++ b/controllers/controller_test.go @@ -32,17 +32,31 @@ func TestMain(m *testing.M) { os.Exit(exitVal) } -func GetRequest(t *testing.T, route string, routeParams ...interface{}) *http.Response { +type httpResponse struct { + *http.Response + t *testing.T +} + +func (h *httpResponse) assertStatusCode(code int) *httpResponse { + assert.Equal(h.t, code, h.Response) + return h +} + +func (h *httpResponse) toDoc() *goquery.Document { + doc, err := goquery.NewDocumentFromReader(h.Body) + require.NoError(h.t, err) + err = h.Body.Close() + assert.NoError(h.t, err) + return doc +} + +func getRequest(t *testing.T, route string, routeParams ...interface{}) *httpResponse { cli := http.Client{} resp, err := cli.Get(srv.URL + c.Web.Reverse(route, routeParams)) require.NoError(t, err) - return resp -} - -func GetGoqueryDoc(t *testing.T, resp *http.Response) *goquery.Document { - doc, err := goquery.NewDocumentFromReader(resp.Body) - require.NoError(t, err) - err = resp.Body.Close() - assert.NoError(t, err) - return doc + h := httpResponse{ + t: t, + Response: resp, + } + return &h }