package access

import (
	"context"
	"testing"
	"time"

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

func TestDeduplicateAgentIDsTrimsBlanksAndPreservesOrder(t *testing.T) {
	require.Equal(t, []string{"agt_1", "agt_2"}, DeduplicateAgentIDs([]string{" agt_1 ", "", "agt_2", "agt_1"}))
}

func TestEnqueueAccessChangeReturnsOutboxVersion(t *testing.T) {
	db, err := gorm.Open(sqlite.Open("file:"+t.Name()+"?mode=memory&cache=shared"), &gorm.Config{})
	require.NoError(t, err)
	require.NoError(t, db.AutoMigrate(&memory.AgentAssetAccessChangeOutbox{}))
	store := memory.New(db)
	now := time.Date(2026, 6, 22, 3, 0, 0, 0, time.UTC)

	version, err := EnqueueAccessChange(context.Background(), store, memory.AgentAssetAccessChangeInput{
		WorkspaceID: "ws_1",
		AgentID:     "agt_1",
		AssetType:   AssetTypeMemory,
		OccurredAt:  now,
	})
	require.NoError(t, err)
	require.GreaterOrEqual(t, version, now.UnixNano())
}
