package media

import (
	"testing"

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

	"github.com/tidbcloud/AgentTeam/internal/api/testkit/httputil"
)

func TestRegisterRoutesOwnsMediaRoutes(t *testing.T) {
	t.Parallel()

	router := gin.New()
	RegisterRoutes(router, Dependencies{})

	counts := httputil.RouteCounts(router)
	for _, route := range mediaRouteKeys() {
		require.Equal(t, 1, counts[route], route)
	}
}

func mediaRouteKeys() []string {
	return []string{
		"GET /api/attachments/:attachmentId",
		"GET /api/avatars/:avatarId",
		"GET /api/v1/me/avatar",
		"GET /api/v1/me/avatar/thumbnail",
		"GET /api/v1/users/:userId/avatar",
		"GET /api/v1/users/:userId/avatar/thumbnail",
		"GET /api/v1/avatar-assets/:avatarId",
		"GET /api/v1/avatar-assets/:avatarId/thumbnail",
		"GET /api/v1/workspaces/:workspaceId/attachments/:attachmentId",
		"GET /api/v1/workspaces/:workspaceId/agents/:agentId/avatar",
		"GET /api/v1/workspaces/:workspaceId/agents/:agentId/avatar/thumbnail",
		"PUT /api/v1/workspaces/:workspaceId/agents/:agentId/avatar",
		"PUT /api/v1/me/avatar",
		"POST /api/v1/workspaces/:workspaceId/attachments",
		"GET /api/v1/workspaces/:workspaceId/stickers",
		"GET /api/v1/workspaces/:workspaceId/stickers/:stickerId",
		"POST /api/v1/workspaces/:workspaceId/stickers",
		"DELETE /api/v1/workspaces/:workspaceId/stickers/:stickerId",
	}
}

func TestRegisterRoutesNilRouterIsNoop(t *testing.T) {
	t.Parallel()

	RegisterRoutes(nil, Dependencies{})
}
