package internet

import (
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/tidbcloud/infra-provider/pkg/cloud/gcp"
	"github.com/tidbcloud/infra-provider/pkg/consts"
	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/internet/task"
)

func TestGetEKSInternetTasks(t *testing.T) {
	c := &task.Context{}
	tasks := GetEKSInternetTasks(nil, c)
	assert.Equal(t, 7, len(tasks))
}

func TestGetGKETasks(t *testing.T) {
	gcpcli, err := gcp.NewClientSet()
	assert.Nil(t, err)
	c := &task.Context{}
	tasks := GetGKEInternetTasks(&InternetReconciler{
		GCPCli: gcpcli,
	}, c)
	assert.Equal(t, 3, len(tasks))
}

func TestGetInternetTasks(t *testing.T) {
	gcpcli, err := gcp.NewClientSet()
	assert.Nil(t, err)
	t.Run("eks", func(t *testing.T) {
		c := &task.Context{
			VPC: &v1alpha1.VPC{
				Spec: v1alpha1.VPCSpec{
					Provider: consts.ProviderTypeEKS,
				},
			},
		}
		tasks := GetEKSInternetTasks(nil, c)
		assert.Equal(t, 7, len(tasks))
	})
	t.Run("gke", func(t *testing.T) {
		c := &task.Context{
			VPC: &v1alpha1.VPC{
				Spec: v1alpha1.VPCSpec{
					Provider: consts.ProviderTypeGKE,
				},
			},
		}
		tasks := GetGKEInternetTasks(&InternetReconciler{
			GCPCli: gcpcli,
		}, c)
		assert.Equal(t, 3, len(tasks))
	})
}
