Update Walk to match all subrouters

Matches all routes instead of just routes with paths.

Fixes #261
This commit is contained in:
Nick Miyake
2017-05-19 11:32:53 -07:00
committed by Kamil Kisiel
parent bcd8bc72b0
commit a322b2c2ec
2 changed files with 28 additions and 4 deletions

View File

@@ -1401,6 +1401,34 @@ func TestWalkNested(t *testing.T) {
}
}
func TestWalkSubrouters(t *testing.T) {
router := NewRouter()
g := router.Path("/g").Subrouter()
o := g.PathPrefix("/o").Subrouter()
o.Methods("GET")
o.Methods("PUT")
// all 4 routes should be matched, but final 2 routes do not have path templates
paths := []string{"/g", "/g/o", "", ""}
idx := 0
err := router.Walk(func(route *Route, router *Router, ancestors []*Route) error {
path := paths[idx]
tpl, _ := route.GetPathTemplate()
if tpl != path {
t.Errorf(`Expected %s got %s`, path, tpl)
}
idx++
return nil
})
if err != nil {
panic(err)
}
if idx != len(paths) {
t.Errorf("Expected %d routes, found %d", len(paths), idx)
}
}
func TestWalkErrorRoute(t *testing.T) {
router := NewRouter()
router.Path("/g")