package kb

import (
	"testing"

	"github.com/stretchr/testify/require"
	"github.com/tidbcloud/AgentTeam/internal/store/resource/activity"
	"gorm.io/gorm"
)

func TestResourceActivityCommitLookupIndexSupportsLatestCommitQueries(t *testing.T) {
	store := newTestStore(t)
	require.True(t, store.db.Migrator().HasIndex(&activity.ResourceActivityEvent{}, "idx_resource_activity_commit_lookup"))
}

func TestKnowledgeBaseSourceListCommitAggregationStaysInWorkspace(t *testing.T) {
	store := newTestStore(t)
	sql := store.db.ToSQL(func(tx *gorm.DB) *gorm.DB {
		var sources []Source
		return orderKBSourceRows(joinLatestKBSourceCommits(tx.Model(&Source{}), "wsp_a"), false).Find(&sources)
	})
	require.Contains(t, sql, "resource_activity_latest_commits WHERE workspace_id = \"wsp_a\"")
	require.NotContains(t, sql, "resource_activity_events")
}

func TestKnowledgeBaseListReadsLatestEventProjection(t *testing.T) {
	store := newTestStore(t)
	sql := store.db.ToSQL(func(tx *gorm.DB) *gorm.DB {
		s := New(tx)
		var items []KnowledgeBase
		return s.knowledgeBaseListRowsQuery(t.Context(), KnowledgeBaseCollectionOptions{WorkspaceID: "wsp_a", PrincipalID: "user", View: "all"}).Find(&items)
	})
	require.Contains(t, sql, "resource_activity_latest_commits")
	require.NotContains(t, sql, "JOIN resource_activity_events")
}
