package handler

import (
	"slices"
	"testing"

	"github.com/gin-gonic/gin"
	"github.com/stretchr/testify/require"
)

func TestModuleRegisterRoutesRegistersFullVulnSurface(t *testing.T) {
	gin.SetMode(gin.TestMode)

	engine := gin.New()
	protected := engine.Group("/api/v1")
	module := NewModule(
		&Handler{},
		&TagHandler{},
		&VulnerabilityTypeHandler{},
		&SourceHandler{},
		&DiscoveryChannelHandler{},
	)

	module.RegisterRoutes(protected, nil)

	routes := engine.Routes()
	registered := make([]string, 0, len(routes))
	for _, route := range routes {
		registered = append(registered, route.Method+" "+route.Path)
	}

	require.True(t, slices.Contains(registered, "GET /api/v1/vulnerabilities"))
	require.True(t, slices.Contains(registered, "GET /api/v1/vulnerability-tags"))
	require.True(t, slices.Contains(registered, "GET /api/v1/vulnerability-types"))
	require.True(t, slices.Contains(registered, "GET /api/v1/vulnerability-sources"))
	require.True(t, slices.Contains(registered, "GET /api/v1/vulnerability-discovery-channels"))
}
