Writing tests for POST handlers
This commit is contained in:
		@ -3,6 +3,7 @@ package handlers
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/http/httptest"
 | 
						"net/http/httptest"
 | 
				
			||||||
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -25,6 +26,20 @@ var theTests = []struct {
 | 
				
			|||||||
	{"sa", "/availability", "GET", []postData{}, http.StatusOK},
 | 
						{"sa", "/availability", "GET", []postData{}, http.StatusOK},
 | 
				
			||||||
	{"contact", "/contact", "GET", []postData{}, http.StatusOK},
 | 
						{"contact", "/contact", "GET", []postData{}, http.StatusOK},
 | 
				
			||||||
	{"ma", "/make-reservation", "GET", []postData{}, http.StatusOK},
 | 
						{"ma", "/make-reservation", "GET", []postData{}, http.StatusOK},
 | 
				
			||||||
 | 
						{"post-search-avail", "/availability", "POST", []postData{
 | 
				
			||||||
 | 
							{key: "start", value: "2020-01-01"},
 | 
				
			||||||
 | 
							{key: "end", value: "2020-01-02"},
 | 
				
			||||||
 | 
						}, http.StatusOK},
 | 
				
			||||||
 | 
						{"post-search-avail-json", "/availability-json", "POST", []postData{
 | 
				
			||||||
 | 
							{key: "start", value: "2020-01-01"},
 | 
				
			||||||
 | 
							{key: "end", value: "2020-01-02"},
 | 
				
			||||||
 | 
						}, http.StatusOK},
 | 
				
			||||||
 | 
						{"make-reservation", "/make-reservation", "POST", []postData{
 | 
				
			||||||
 | 
							{key: "first_name", value: "John"},
 | 
				
			||||||
 | 
							{key: "last_name", value: "Smith"},
 | 
				
			||||||
 | 
							{key: "email", value: "me@here.com"},
 | 
				
			||||||
 | 
							{key: "phone", value: "12345"},
 | 
				
			||||||
 | 
						}, http.StatusOK},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestHandlers(t *testing.T) {
 | 
					func TestHandlers(t *testing.T) {
 | 
				
			||||||
@ -43,6 +58,18 @@ func TestHandlers(t *testing.T) {
 | 
				
			|||||||
				t.Errorf("for %s, expected %d but got %d", e.name, e.expectedStatusCode, resp.StatusCode)
 | 
									t.Errorf("for %s, expected %d but got %d", e.name, e.expectedStatusCode, resp.StatusCode)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
 | 
								values := url.Values{}
 | 
				
			||||||
 | 
								for _, x := range e.params {
 | 
				
			||||||
 | 
									values.Add(x.key, x.value)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								resp, err := ts.Client().PostForm(ts.URL+e.url, values)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									t.Log(err)
 | 
				
			||||||
 | 
									t.Fatal(err)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if resp.StatusCode != e.expectedStatusCode {
 | 
				
			||||||
 | 
									t.Errorf("for %s, expected %d but got %d", e.name, e.expectedStatusCode, resp.StatusCode)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -53,7 +53,7 @@ func getRoutes() http.Handler {
 | 
				
			|||||||
	mux := chi.NewMux()
 | 
						mux := chi.NewMux()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mux.Use(middleware.Recoverer)
 | 
						mux.Use(middleware.Recoverer)
 | 
				
			||||||
	mux.Use(NoSurf)
 | 
						// mux.Use(NoSurf)  // No need to test
 | 
				
			||||||
	mux.Use(SessionLoad)
 | 
						mux.Use(SessionLoad)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mux.Get("/", Repo.Home)
 | 
						mux.Get("/", Repo.Home)
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user