|
|
package router
|
|
|
|
|
|
import (
|
|
|
"testing"
|
|
|
|
|
|
ctxpkg "github.com/noahlann/nnet/pkg/context"
|
|
|
routerpkg "github.com/noahlann/nnet/pkg/router"
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
)
|
|
|
|
|
|
func TestRoute(t *testing.T) {
|
|
|
router := NewRouter()
|
|
|
|
|
|
handler := func(ctx ctxpkg.Context) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
route := router.RegisterString("/test", handler)
|
|
|
assert.NotNil(t, route, "Expected route to be non-nil")
|
|
|
// Route接口可能没有Path方法,只测试route不为nil
|
|
|
_ = route
|
|
|
}
|
|
|
|
|
|
func TestRouteWithOptions(t *testing.T) {
|
|
|
router := NewRouter()
|
|
|
|
|
|
type RequestBody struct {
|
|
|
Name string `json:"name"`
|
|
|
}
|
|
|
|
|
|
handler := func(ctx ctxpkg.Context) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
route := router.RegisterString("/test", handler, routerpkg.WithRequestType(&RequestBody{}))
|
|
|
assert.NotNil(t, route, "Expected route to be non-nil")
|
|
|
|
|
|
requestType := route.RequestType()
|
|
|
assert.NotNil(t, requestType, "Expected request type to be set")
|
|
|
}
|
|
|
|
|
|
func TestRouteMiddleware(t *testing.T) {
|
|
|
router := NewRouter()
|
|
|
|
|
|
handler := func(ctx ctxpkg.Context) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
route := router.RegisterString("/test", handler)
|
|
|
assert.NotNil(t, route, "Expected route to be non-nil")
|
|
|
|
|
|
// 测试route的Handler方法
|
|
|
routeHandler := route.Handler()
|
|
|
assert.NotNil(t, routeHandler, "Expected handler to be non-nil")
|
|
|
|
|
|
// 测试Use方法添加中间件
|
|
|
middleware := func(ctx ctxpkg.Context) error {
|
|
|
return nil
|
|
|
}
|
|
|
route.Use(middleware)
|
|
|
|
|
|
// 验证中间件已添加
|
|
|
routeHandler2 := route.Handler()
|
|
|
assert.NotNil(t, routeHandler2, "Expected handler to be non-nil")
|
|
|
}
|
|
|
|
|
|
func TestRouteCodec(t *testing.T) {
|
|
|
router := NewRouter()
|
|
|
|
|
|
handler := func(ctx ctxpkg.Context) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
route := router.RegisterString("/test", handler, routerpkg.WithCodec("json"))
|
|
|
assert.NotNil(t, route)
|
|
|
assert.Equal(t, "json", route.CodecName(), "Expected codec name to be json")
|
|
|
}
|
|
|
|