package migrate

import (
	"testing"

	. "github.com/smartystreets/goconvey/convey"
	"github.com/tidbcloud/core-svc/model"
)

func Test_getLabelProfileDisplayName(t *testing.T) {
	Convey("Test_getLabelProfileDisplayName", t, func() {
		testTable := []struct {
			name        string
			displayName string
			memory      int
			result      string
		}{
			{
				name:   "aws_freetier_10",
				memory: 0,
				result: "aws_freetier_10",
			}, {
				name:   "c5.xlarge/gp2",
				memory: 4,
				result: "c5.xlarge/gp2",
			},
			{
				name:   "1 vCPU",
				memory: 3,
				result: "1 vCPU, 3 GiB",
			}, {
				name:   "1 vCPU ",
				memory: 3,
				result: "1 vCPU, 3 GiB ",
			}, {
				name:   " 1 vCPU",
				memory: 3,
				result: " 1 vCPU, 3 GiB",
			},
			{
				name:   "4 vCPU (Beta)",
				memory: 8,
				result: "4 vCPU, 8 GiB (Beta)",
			},
			{ // use exist displayName
				name:        "4 vCPU (Beta)",
				displayName: "abcd",
				memory:      8,
				result:      "abcd",
			},
			{ // caompatible for "16 vCPU 64 GiB"
				name:        "16 vCPU 64 GiB",
				displayName: "",
				memory:      8,
				result:      "",
			},
		}

		for _, each := range testTable {
			labelProfile := &model.LabelProfile{
				Name:        each.name,
				DisplayName: each.displayName,
				InternalProfile: &model.InternalProfile{
					InfraCompute: &model.InfraCompute{
						MemorySizeGi: uint32(each.memory),
					},
				},
			}

			result := getLabelProfileDisplayName(labelProfile)
			So(result, ShouldEqual, each.result)
		}
	})
}
