package channel

import (
	"net/http"
	"testing"

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

	"github.com/tidbcloud/AgentTeam/internal/api/dto"
)

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

	store := &channelHandlerTestStore{}
	handler := &ChannelDiscoveryHandler{channels: store}

	listResponse, err := handler.DiscoverList(channelWorkspaceRequest())
	require.NoError(t, err)
	require.Equal(t, []dto.DiscoverChannelResponse{{ID: "chn_pub", Name: "public", Slug: "public", Description: "Public", Visibility: "public"}}, listResponse.Body)
	require.Equal(t, "usr_1", store.discoveredList.userID)

	getResponse, err := handler.DiscoverGet(channelWorkspaceRequest(gin.Param{Key: "channelId", Value: " chn_pub "}))
	require.NoError(t, err)
	require.Equal(t, "chn_pub", store.discoveredGet.channelID)
	require.Equal(t, dto.DiscoverChannelResponse{ID: "chn_pub", Name: "public", Slug: "public", Description: "Public", Visibility: "public"}, getResponse.Body)

	_, err = handler.DiscoverGet(channelWorkspaceRequest(gin.Param{Key: "channelId", Value: "   "}))
	requireHTTPError(t, err, http.StatusBadRequest, "channelId is required")
}
