package region

import (
	"testing"

	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"

	tntent "github.com/tidbcloud/devops/entity/tenant"
	"github.com/tidbcloud/devops/pkg/infra/utils/test"
)

func TestCountryToRegion(t *testing.T) {
	RegisterFailHandler(Fail)
	RunSpecs(t, "Tenant Country Region Suite", test.ReporterConfig())
}

var _ = Describe("CountryToRegion", func() {
	It("maps LATAM countries to LATAM", func() {
		countries := []string{
			"AG", "AR", "BB", "BZ", "BO", "BR", "CL", "CO", "CR", "CU", "DM", "DO", "EC", "SV", "GD", "GT", "GY", "HT", "HN",
			"JM", "MX", "NI", "PA", "PY", "PE", "PR", "KN", "LC", "VC", "SR", "TT", "UY", "VE",
		}

		for _, country := range countries {
			Expect(CountryToRegion(country)).To(Equal(tntent.TenantRegionLATAM), "country %s", country)
		}
	})

	It("keeps existing region mappings", func() {
		Expect(CountryToRegion("US")).To(Equal(tntent.TenantRegionNA))
		Expect(CountryToRegion("CA")).To(Equal(tntent.TenantRegionNA))
		Expect(CountryToRegion("SG")).To(Equal(tntent.TenantRegionAPAC))
		Expect(CountryToRegion("DE")).To(Equal(tntent.TenantRegionEMEA))
		Expect(CountryToRegion("JP")).To(Equal(tntent.TenantRegionJapan))
		Expect(CountryToRegion("")).To(Equal(tntent.TenantRegionUnknown))
	})
})
