Files
crawlab/core/controllers/router_v2_test.go
2024-06-14 15:42:50 +08:00

92 lines
2.3 KiB
Go

package controllers_test
import (
"github.com/crawlab-team/crawlab/core/controllers"
"github.com/crawlab-team/crawlab/core/models/models"
"github.com/gin-gonic/gin"
"github.com/stretchr/testify/assert"
"testing"
)
func TestRouterGroups(t *testing.T) {
router := gin.Default()
groups := controllers.NewRouterGroups(router)
assertions := []struct {
group *gin.RouterGroup
name string
}{
{groups.AuthGroup, "AuthGroup"},
{groups.AnonymousGroup, "AnonymousGroup"},
}
for _, a := range assertions {
assert.NotNil(t, a.group, a.name+" should not be nil")
}
}
func TestRegisterController_Routes(t *testing.T) {
router := gin.Default()
groups := controllers.NewRouterGroups(router)
ctr := controllers.NewControllerV2[models.TestModel]()
basePath := "/testmodels"
controllers.RegisterController(groups.AuthGroup, basePath, ctr)
// Check if all routes are registered
routes := router.Routes()
var methodPaths []string
for _, route := range routes {
methodPaths = append(methodPaths, route.Method+" - "+route.Path)
}
expectedRoutes := []gin.RouteInfo{
{Method: "GET", Path: basePath},
{Method: "GET", Path: basePath + "/:id"},
{Method: "POST", Path: basePath},
{Method: "PUT", Path: basePath + "/:id"},
{Method: "PATCH", Path: basePath},
{Method: "DELETE", Path: basePath + "/:id"},
{Method: "DELETE", Path: basePath},
}
assert.Equal(t, len(expectedRoutes), len(routes))
for _, route := range expectedRoutes {
assert.Contains(t, methodPaths, route.Method+" - "+route.Path)
}
}
func TestInitRoutes_ProjectsRoute(t *testing.T) {
router := gin.Default()
controllers.InitRoutes(router)
// Check if the projects route is registered
routes := router.Routes()
var methodPaths []string
for _, route := range routes {
methodPaths = append(methodPaths, route.Method+" - "+route.Path)
}
expectedRoutes := []gin.RouteInfo{
{Method: "GET", Path: "/projects"},
{Method: "GET", Path: "/projects/:id"},
{Method: "POST", Path: "/projects"},
{Method: "PUT", Path: "/projects/:id"},
{Method: "PATCH", Path: "/projects"},
{Method: "DELETE", Path: "/projects/:id"},
{Method: "DELETE", Path: "/projects"},
}
for _, route := range expectedRoutes {
assert.Contains(t, methodPaths, route.Method+" - "+route.Path)
}
}
func TestMain(m *testing.M) {
gin.SetMode(gin.TestMode)
m.Run()
}