Updating existing tests to handle sessions
This commit is contained in:
parent
1c46c5a64b
commit
f67aed4942
@ -1,6 +1,9 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"go-udemy-web-1/internal/models"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
@ -19,27 +22,27 @@ var theTests = []struct {
|
||||
params []postData
|
||||
expectedStatusCode int
|
||||
}{
|
||||
{"home", "/", "GET", []postData{}, http.StatusOK},
|
||||
{"about", "/about", "GET", []postData{}, http.StatusOK},
|
||||
{"gq", "/generals-quarters", "GET", []postData{}, http.StatusOK},
|
||||
{"ms", "/majors-suite", "GET", []postData{}, http.StatusOK},
|
||||
{"sa", "/availability", "GET", []postData{}, http.StatusOK},
|
||||
{"contact", "/contact", "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},
|
||||
// {"home", "/", "GET", []postData{}, http.StatusOK},
|
||||
// {"about", "/about", "GET", []postData{}, http.StatusOK},
|
||||
// {"gq", "/generals-quarters", "GET", []postData{}, http.StatusOK},
|
||||
// {"ms", "/majors-suite", "GET", []postData{}, http.StatusOK},
|
||||
// {"sa", "/availability", "GET", []postData{}, http.StatusOK},
|
||||
// {"contact", "/contact", "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) {
|
||||
@ -73,3 +76,40 @@ func TestHandlers(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestRepository_Reservation(t *testing.T) {
|
||||
reservation := models.Reservation{
|
||||
RoomID: 1,
|
||||
Room: models.Room{
|
||||
ID: 1,
|
||||
RoomName: "General's Quarters",
|
||||
},
|
||||
}
|
||||
|
||||
req, _ := http.NewRequest("GET", "/make-reservation", nil)
|
||||
ctx := getCtx(req)
|
||||
|
||||
req = req.WithContext(ctx)
|
||||
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
session.Put(ctx, "reservation", reservation)
|
||||
|
||||
handler := http.HandlerFunc(Repo.MakeReservation)
|
||||
|
||||
handler.ServeHTTP(rr, req)
|
||||
|
||||
if rr.Code != http.StatusOK {
|
||||
t.Errorf("Reservation handler returned response code: got %d, wanted %d",
|
||||
rr.Code, http.StatusOK)
|
||||
}
|
||||
}
|
||||
|
||||
func getCtx(req *http.Request) context.Context {
|
||||
ctx, err := session.Load(req.Context(), req.Header.Get("X-Session"))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
|
||||
return ctx
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/alexedwards/scs/v2"
|
||||
@ -26,7 +27,7 @@ var (
|
||||
session *scs.SessionManager
|
||||
)
|
||||
|
||||
func getRoutes() http.Handler {
|
||||
func TestMain(m *testing.M) {
|
||||
gob.Register(models.Reservation{})
|
||||
// change this to true when in production
|
||||
app.InProduction = false
|
||||
@ -57,6 +58,10 @@ func getRoutes() http.Handler {
|
||||
|
||||
render.NewRenderer(&app)
|
||||
|
||||
os.Exit(m.Run())
|
||||
}
|
||||
|
||||
func getRoutes() http.Handler {
|
||||
mux := chi.NewMux()
|
||||
|
||||
mux.Use(middleware.Recoverer)
|
||||
|
Loading…
Reference in New Issue
Block a user