@@ -34,8 +34,21 @@ func HTML(renderable RequestRenderable) http.Handler {
34
34
}
35
35
36
36
func TestRequestRequestHandler (t * testing.T ) {
37
+ var statusCode = func (code int ) http.Handler {
38
+ return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
39
+ w .WriteHeader (code )
40
+ })
41
+ }
42
+
37
43
var empty = RequestRenderableFunc (func (r * http.Request ) (AsRenderable , http.Handler , error ) {
38
- return nil , nil , nil
44
+ switch r .URL .Query ().Get ("not_found" ) {
45
+ case "default" :
46
+ return nil , http .NotFoundHandler (), nil
47
+ case "nil_404" :
48
+ return nil , statusCode (http .StatusNotFound ), nil
49
+ default :
50
+ return nil , nil , nil
51
+ }
39
52
})
40
53
41
54
mux := http .NewServeMux ()
@@ -85,6 +98,18 @@ func TestRequestRequestHandler(t *testing.T) {
85
98
assert .Equal (t , 200 , code )
86
99
})
87
100
101
+ t .Run ("empty handler can 404" , func (t * testing.T ) {
102
+ body , code , _ := sendRequest (t , "/empty?not_found=default" )
103
+ assert .Equal (t , "404 page not found\n " , body )
104
+ assert .Equal (t , 404 , code )
105
+ })
106
+
107
+ t .Run ("empty handler can 404 and nil" , func (t * testing.T ) {
108
+ body , code , _ := sendRequest (t , "/empty?not_found=nil_404" )
109
+ assert .Equal (t , "" , body )
110
+ assert .Equal (t , 404 , code )
111
+ })
112
+
88
113
t .Run ("person renders (name=Stan)" , func (t * testing.T ) {
89
114
body , code , _ := sendRequest (t , "/person?name=Stan" )
90
115
assert .Equal (t , "<div>Hi, Stan.</div>" , body )
0 commit comments