package common

import (
	"fmt"
	"testing"

	"github.com/smartystreets/goconvey/convey"

	"github.com/tidbcloud/tidb-management-service/dedicated-global-service/infra/repoimpl/schema"
)

func TestFindAssociationTables(t *testing.T) {
	convey.Convey("test association", t, func() {
		convey.Convey("cluster", func() {
			out, err := FindReferences(&schema.Cluster{})
			convey.So(out[0], convey.ShouldEqual, "Region.Provider")
			convey.So(out[1], convey.ShouldEqual, "Region.Provider.Regions")
			convey.So(out[2], convey.ShouldEqual, "Region.RegionTenants")
			convey.So(out[3], convey.ShouldEqual, "Provider.Regions")
			convey.So(out[4], convey.ShouldEqual, "Provider.Regions.Provider")
			convey.So(out[5], convey.ShouldEqual, "Provider.Regions.RegionTenants")
			convey.So(out[6], convey.ShouldEqual, "CustomerManagedEncryptionKey.Region")
			convey.So(out[7], convey.ShouldEqual, "CustomerManagedEncryptionKey.Region.Provider")
			convey.So(out[8], convey.ShouldEqual, "CustomerManagedEncryptionKey.Region.RegionTenants")
			convey.So(out[9], convey.ShouldEqual, "CustomerManagedEncryptionKey.Provider")
			convey.So(out[10], convey.ShouldEqual, "CustomerManagedEncryptionKey.Provider.Regions")

			convey.So(out[11], convey.ShouldEqual, "ClusterComponents.ComponentTierUnit")
			convey.So(out[12], convey.ShouldEqual, "ClusterComponents.ComponentTierUnit.Provider")
			convey.So(out[13], convey.ShouldEqual, "ClusterComponents.ComponentTierUnit.TierUnitConditions")
			convey.So(out[14], convey.ShouldEqual, "ClusterComponents.ComponentTierUnit.ComponentTier")

			convey.So(out[15], convey.ShouldEqual, "ClusterComponents.ComponentTierUnit.InstanceType")
			convey.So(err, convey.ShouldBeNil)
			fmt.Println(out)
		})
	})
}
