package cmd

import (
	"strings"
	"testing"

	"github.com/stretchr/testify/require"
)

func TestGeneratedDocsDoNotPromiseLocalDashboard(t *testing.T) {
	manPage := strings.ToLower(generateManPage())
	require.NotContains(t, manPage, "local dashboard")
	require.Contains(t, manPage, "authenticated local api")

	var err error
	skillDoc := strings.ToLower(captureStdout(t, func() {
		err = printSkillDoc()
	}))
	require.NoError(t, err)
	require.NotContains(t, skillDoc, "local dashboard")
	require.Contains(t, skillDoc, "authenticated local api")
}

func TestRootCommandDoesNotExposeLegacyAppLaunch(t *testing.T) {
	for _, command := range rootCmd.Commands() {
		require.NotEqual(t, "app-launch", command.Name())
	}
	require.NotContains(t, strings.ToLower(rootCmd.Long), "local dashboard")
	require.Contains(t, rootCmd.Long, "Electron owns the desktop application shell")
}

func TestGenerateManPageIncludesChannelConnect(t *testing.T) {
	manPage := generateManPage()

	require.Contains(t, manPage, `Subcommands: \fBlist\fR, \fBget\fR, \fBadd\fR`)
	require.NotContains(t, manPage, `agentteam channel connect`)
	require.NotContains(t, manPage, `.SS "session"`)
	require.NotContains(t, manPage, `agentteam session list`)
	require.NotContains(t, manPage, `agentteam provider enable`)
	require.Contains(t, manPage, `agentteam daemon --server-url https://agentteam.example.com --api-key <machineApiKey>`)
	require.Contains(t, manPage, `agentteam service install --user`)
	require.Contains(t, manPage, `agentteam status --user`)
	require.NotContains(t, manPage, `\fBrestart\fR, \fBstatus\fR.`)
	require.Contains(t, manPage, `.SS "status"`)
}
