package registry

import (
	"testing"

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

	"github.com/tidbcloud/AgentTeam/internal/extension/spec"
)

func TestRegistry_ListSorted(t *testing.T) {
	r := New()
	pkgB2 := makePackage(t, "beta", 2, "b2", "b two")
	pkgA2 := makePackage(t, "alpha", 2, "a2", "a two")
	pkgA1 := makePackage(t, "alpha", 1, "a1", "a one")
	for _, pkg := range []spec.Package{pkgB2, pkgA2, pkgA1} {
		_, err := r.RegisterExternal(pkg)
		require.NoError(t, err)
	}

	list := r.List()
	require.Len(t, list, 3)
	assert.Equal(t, "alpha", list[0].Definition.Domain)
	assert.Equal(t, 1, list[0].Definition.Version)
	assert.Equal(t, "alpha", list[1].Definition.Domain)
	assert.Equal(t, 2, list[1].Definition.Version)
	assert.Equal(t, "beta", list[2].Definition.Domain)
	assert.Equal(t, 2, list[2].Definition.Version)
}
