package nodepool

import (
	"testing"

	"github.com/stretchr/testify/require"
	corev1 "k8s.io/api/core/v1"

	cloudv1 "github.com/tidbcloud/infra-api/api/v1"
)

func Test_toGKENodeTaints(t *testing.T) {
	require.Empty(t, toGKENodeTaints(&cloudv1.NodegroupSpec{}))
	require.Empty(t, toGKENodeTaints(&cloudv1.NodegroupSpec{
		Taints: []corev1.Taint{
			{
				Key:    "a",
				Value:  "b",
				Effect: "",
			},
		},
	}))

	spec := &cloudv1.NodegroupSpec{
		Taints: []corev1.Taint{
			{
				Key:    "a",
				Value:  "b",
				Effect: corev1.TaintEffectNoSchedule,
			},
			{
				Key:    "c",
				Value:  "d",
				Effect: corev1.TaintEffectPreferNoSchedule,
			},
		},
	}
	taints := toGKENodeTaints(spec)
	require.Len(t, taints, 2)
	require.Equal(t, taints[0].Key, "a")
	require.Equal(t, taints[0].Value, "b")
	require.Equal(t, taints[0].Effect, "NO_SCHEDULE")
	require.Equal(t, taints[1].Key, "c")
	require.Equal(t, taints[1].Value, "d")
	require.Equal(t, taints[1].Effect, "PREFER_NO_SCHEDULE")
}
