add an example (and a test case) for same route path pattern but different macro function's input argument

Former-commit-id: f20ac838a08473b6b8114b407cb0dcde7765f634
This commit is contained in:
Gerasimos (Makis) Maropoulos 2020-07-02 20:56:22 +03:00
parent 85fc0f5dab
commit beb3f730a0
2 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,33 @@
package main
import "github.com/kataras/iris/v12"
func main() {
app := newApp()
app.Logger().SetLevel("debug")
app.Listen(":8080")
}
func newApp() *iris.Application {
app := iris.New()
app.HandleMany(iris.MethodGet, "/ /api/{page:string suffix(.html)}", handler1)
app.Get("/api/{name:string suffix(.zip)}", handler2)
return app
}
func handler1(ctx iris.Context) {
reply(ctx)
}
func handler2(ctx iris.Context) {
reply(ctx)
}
func reply(ctx iris.Context) {
ctx.JSON(iris.Map{
"handler": ctx.HandlerName(),
"params": ctx.Params().Store,
})
}

View File

@ -0,0 +1,41 @@
package main
import (
"testing"
"github.com/kataras/iris/v12/core/memstore"
"github.com/kataras/iris/v12/httptest"
)
func TestSameParameterTypeDifferentMacroFunctions(t *testing.T) {
app := newApp()
e := httptest.New(t, app)
type resp struct {
Handler string `json:"handler"`
Params memstore.Store `json:"params"`
}
var (
expectedIndex = resp{
Handler: "iris/_examples/routing/dynamic-path/same-pattern-different-func.handler1",
Params: nil,
}
expectedHTMLPage = resp{
Handler: "iris/_examples/routing/dynamic-path/same-pattern-different-func.handler1",
Params: memstore.Store{
{Key: "page", ValueRaw: "random.html"},
},
}
expectedZipName = resp{
Handler: "iris/_examples/routing/dynamic-path/same-pattern-different-func.handler2",
Params: memstore.Store{
{Key: "name", ValueRaw: "random.zip"},
},
}
)
e.GET("/").Expect().Status(httptest.StatusOK).JSON().Equal(expectedIndex)
e.GET("/api/random.html").Expect().Status(httptest.StatusOK).JSON().Equal(expectedHTMLPage)
e.GET("/api/random.zip").Expect().Status(httptest.StatusOK).JSON().Equal(expectedZipName)
}