Added trailing slash for static routes

This commit is contained in:
Eduard Urbach 2024-03-13 13:04:03 +01:00
parent 0323126f2c
commit a7d64037a7
Signed by: eduard
GPG key ID: 49226B848C78F6C8
8 changed files with 119 additions and 96 deletions

View file

@ -6,6 +6,7 @@ import (
"git.akyoto.dev/go/assert"
"git.akyoto.dev/go/router"
"git.akyoto.dev/go/router/testdata"
)
func TestStatic(t *testing.T) {
@ -162,18 +163,18 @@ func TestMethods(t *testing.T) {
}
func TestGitHub(t *testing.T) {
routes := loadRoutes("testdata/github.txt")
routes := testdata.Routes("testdata/github.txt")
r := router.New[string]()
for _, route := range routes {
r.Add(route.method, route.path, "octocat")
r.Add(route.Method, route.Path, "octocat")
}
for _, route := range routes {
data, _ := r.Lookup(route.method, route.path)
data, _ := r.Lookup(route.Method, route.Path)
assert.Equal(t, data, "octocat")
data = r.LookupNoAlloc(route.method, route.path, func(string, string) {})
data = r.LookupNoAlloc(route.Method, route.Path, func(string, string) {})
assert.Equal(t, data, "octocat")
}
}
@ -181,7 +182,6 @@ func TestGitHub(t *testing.T) {
func TestTrailingSlash(t *testing.T) {
r := router.New[string]()
r.Add("GET", "/hello", "Hello 1")
r.Add("GET", "/hello/", "Hello 2")
data, params := r.Lookup("GET", "/hello")
assert.Equal(t, len(params), 0)
@ -189,7 +189,35 @@ func TestTrailingSlash(t *testing.T) {
data, params = r.Lookup("GET", "/hello/")
assert.Equal(t, len(params), 0)
assert.Equal(t, data, "Hello 2")
assert.Equal(t, data, "Hello 1")
}
func TestTrailingSlashOverwrite(t *testing.T) {
r := router.New[string]()
r.Add("GET", "/hello", "route 1")
r.Add("GET", "/hello/", "route 2")
r.Add("GET", "/:param", "route 3")
r.Add("GET", "/:param/", "route 4")
r.Add("GET", "/*any", "route 5")
data, params := r.Lookup("GET", "/hello")
assert.Equal(t, len(params), 0)
assert.Equal(t, data, "route 1")
data, params = r.Lookup("GET", "/hello/")
assert.Equal(t, len(params), 0)
assert.Equal(t, data, "route 2")
data, params = r.Lookup("GET", "/param")
assert.Equal(t, len(params), 1)
assert.Equal(t, data, "route 3")
data, params = r.Lookup("GET", "/param/")
assert.Equal(t, len(params), 1)
assert.Equal(t, data, "route 4")
data, _ = r.Lookup("GET", "/wild/card/")
assert.Equal(t, data, "route 5")
}
func TestOverwrite(t *testing.T) {