Commit 7c06cc76 authored by santiaago's avatar santiaago
Browse files

add test for square controller

add route logic into testing.GenerateHandlerFunc
parent bb61d404
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -4,21 +4,25 @@ import (
	"net/http"
	"testing"

	"github.com/taironas/route"
	tgTesting "github.com/taironas/tinygraphs/testing"
)

func TestCheckerboard(t *testing.T) {

	r := new(route.Router)
	r.HandleFunc("/checkerboard", Checkerboard)

	test := tgTesting.GenerateHandlerFunc(t, Checkerboard)
	for _, p := range tgTesting.GoodParams {
		recorder := test("GET", p)
		recorder := test("/checkerboard", "GET", p, r)
		if recorder.Code != http.StatusOK {
			t.Errorf("returned %v. Expected %v.", recorder.Code, http.StatusBadRequest)
		}
	}

	for _, p := range tgTesting.BadParams {
		recorder := test("GET", p)
		recorder := test("/checkerboard", "GET", p, r)
		if recorder.Code != http.StatusOK {
			t.Errorf("returned %v. Expected %v.", recorder.Code, http.StatusBadRequest)
		}
+30 −0
Original line number Diff line number Diff line
package squares

import (
	"net/http"
	"testing"

	"github.com/taironas/route"
	tgTesting "github.com/taironas/tinygraphs/testing"
)

func TestRandom(t *testing.T) {

	r := new(route.Router)
	r.HandleFunc("/squares/random", Random)

	test := tgTesting.GenerateHandlerFunc(t, Random)
	for _, p := range tgTesting.GoodParams {
		recorder := test("/squares/random", "GET", p, r)
		if recorder.Code != http.StatusOK {
			t.Errorf("returned %v. Expected %v.", recorder.Code, http.StatusBadRequest)
		}
	}

	for _, p := range tgTesting.BadParams {
		recorder := test("/squares/random", "GET", p, r)
		if recorder.Code != http.StatusOK {
			t.Errorf("returned %v. Expected %v.", recorder.Code, http.StatusBadRequest)
		}
	}
}
+32 −0
Original line number Diff line number Diff line
package squares

import (
	"net/http"
	"testing"

	"github.com/taironas/route"

	tgTesting "github.com/taironas/tinygraphs/testing"
)

func TestSquares(t *testing.T) {

	r := new(route.Router)
	r.HandleFunc("/squares/:key", Square)

	test := tgTesting.GenerateHandlerFunc(t, Square)
	for _, p := range tgTesting.GoodParams {
		recorder := test("/squares/test", "GET", p, r)
		if recorder.Code != http.StatusOK {
			t.Errorf("returned %v. Expected %v.", recorder.Code, http.StatusBadRequest)
		}
	}

	for _, p := range tgTesting.BadParams {
		recorder := test("/squares/test", "GET", p, r)
		if recorder.Code != http.StatusOK {
			t.Errorf("returned %v. Expected %v.", recorder.Code, http.StatusBadRequest)
		}
	}

}
+8 −6
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ import (
	"net/http/httptest"
	"strings"
	"testing"

	"github.com/taironas/route"
)

var GoodParams []string
@@ -28,19 +30,19 @@ func init() {
	}
}

type HandlerFunc func(method, params string) *httptest.ResponseRecorder
type HandlerFunc func(url, method, params string, r *route.Router) *httptest.ResponseRecorder

func GenerateHandlerFunc(t *testing.T, handler func(http.ResponseWriter, *http.Request)) HandlerFunc {

	return func(method, params string) *httptest.ResponseRecorder {
	return func(url, method, params string, r *route.Router) *httptest.ResponseRecorder {

		if r, err := http.NewRequest(method, "", strings.NewReader(params)); err != nil {
		if req, err := http.NewRequest(method, url, strings.NewReader(params)); err != nil {
			t.Errorf("%v", err)
		} else {
			r.Header.Set("Content-Type", "application/json")
			r.Body.Close()
			req.Header.Set("Content-Type", "application/json")
			req.Body.Close()
			recorder := httptest.NewRecorder()
			handler(recorder, r)
			r.ServeHTTP(recorder, req)
			return recorder
		}
		return nil