fixed router and added test for prefix

This commit is contained in:
2017-11-13 19:42:28 +00:00
parent ef857c40a4
commit dcca37ac28
2 changed files with 19 additions and 3 deletions

View File

@@ -17,7 +17,7 @@ type DefaultRouter struct {
prefix string
}
func (r *Prefix) Prefix(path string) {
func (r *DefaultRouter) Prefix(path string) {
r.prefix = path
}
@@ -49,11 +49,13 @@ func (r *DefaultRouter) GetStaticRoutes() []*StaticRoute {
}
func (r *DefaultRouter) addRoute(m, p string, h Handler) {
path := fmt.Sprintf("/%s/%s", strings.TrimPrefix(r.prefix, "/"), strings.TrimSuffix(p, "/"))
if r.prefix != "" {
p = fmt.Sprintf("/%s/%s", strings.TrimPrefix(r.prefix, "/"), strings.TrimSuffix(p, "/"))
}
r.Routes = append(r.Routes, &Route{
Method: m,
Path: path,
Path: p,
Handler: h,
})
}

View File

@@ -33,3 +33,17 @@ func Test_Static_Route_Creation(t *testing.T) {
route := routes[0]
r.Equal("/test-path", route.Path)
}
func Test_Prefix_Route_Creation(t *testing.T) {
r := require.New(t)
router := tuu.NewRouter()
router.Prefix("/prefix")
router.GET("/home", func(ctx tuu.Context) error { return nil })
routes := router.GetRoutes()
r.Len(routes, 1)
route := routes[0]
r.Contains(route.Path, "/prefix")
}