package exec

import (
	"testing"

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

func TestExtensionHelpUsesContentOnlyContract(t *testing.T) {
	snapshot := NewExtensionSnapshot(`"ext-v1-help"`, []ExtensionDomain{{
		ExtensionName: "gh",
		DisplayName:   "GitHub",
		Actions: []ExtensionAction{{
			ExtensionName: "gh",
			DisplayName:   "GitHub",
			Name:          "list-issues",
			Summary:       "List issues",
			Description:   "Lists repository issues.",
			Safety:        ExtensionSafety{Class: "read"},
			InputSchema:   map[string]any{"type": "object"},
			OutputSchema:  map[string]any{"type": "array"},
			Example:       map[string]any{"owner": "pingcap"},
		}},
	}})

	root := snapshot.RenderRootHelp()
	require.Contains(t, root, "gh list-issues")
	require.NotContains(t, root, "digest")
	require.NotContains(t, root, "version")

	action, ok := snapshot.RenderActionHelp("gh", "list-issues")
	require.True(t, ok)
	require.Contains(t, action, "Safety: class=read")
	require.NotContains(t, action, "idempotent")
	require.NotContains(t, action, "destructive=")

	guidance := snapshot.RuntimeGuidance()
	require.Contains(t, guidance, "- gh list-issues")
	require.NotContains(t, guidance, "Catalog version")
	require.NotContains(t, guidance, "digest")
}

func TestExtensionRuntimeGuidanceEmpty(t *testing.T) {
	require.Empty(t, (ExtensionSnapshot{}).RuntimeGuidance())
	require.Empty(
		t,
		NewExtensionSnapshot(`"ext-v1-empty"`, nil).RuntimeGuidance(),
	)
}
