This repository has been archived by the owner on Feb 12, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
imaginative-go_test.go
66 lines (53 loc) · 1.52 KB
/
imaginative-go_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
import (
"github.com/julienschmidt/httprouter"
"net/http"
"net/http/httptest"
"os"
"strings"
"testing"
)
func TestHome(t *testing.T) {
if os.Getenv("IGO_ENV") != "prod" {
return
}
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
rr := newRequestRecorder(req, "GET", "/", Home)
if rr.Code != 200 {
t.Error("Expected response code to be 200")
}
expected := `Imaginative Go`
if !strings.Contains(rr.Body.String(), expected) {
t.Error("Response body does not match")
}
}
func TestReadContent(t *testing.T) {
if os.Getenv("IGO_ENV") != "prod" {
return
}
req, err := http.NewRequest("GET", "/content/hello-world", nil)
if err != nil {
t.Fatal(err)
}
rr := newRequestRecorder(req, "GET", "/content/hello-world", ReadContent)
if rr.Code != 200 {
t.Error("Expected response code to be 200")
}
expected := `Hello World`
if !strings.Contains(rr.Body.String(), expected) {
t.Error("Response body does not match")
}
}
func newRequestRecorder(req *http.Request, method string, strPath string, fnHandler func(w http.ResponseWriter, r *http.Request, param httprouter.Params)) *httptest.ResponseRecorder {
router := httprouter.New()
router.Handle(method, strPath, fnHandler)
// We create a ResponseRecorder (which satisfies http.ResponseWriter) to record the response.
rr := httptest.NewRecorder()
// Our handlers satisfy http.Handler, so we can call their ServeHTTP method
// directly and pass in our Request and ResponseRecorder.
router.ServeHTTP(rr, req)
return rr
}