package internet

import (
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/cloud/aliyun"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/consts"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/internet/task"
	"go.uber.org/mock/gomock"
)

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

func TestGetInternetTasks(t *testing.T) {
	testCases := []struct {
		providerType      string
		expectedTaskCount int
	}{
		{
			providerType:      consts.ProviderTypeEKS,
			expectedTaskCount: 7,
		},
		{
			providerType:      consts.ProviderTypeACK,
			expectedTaskCount: 7,
		},
	}

	for _, tc := range testCases {
		t.Run(tc.providerType, func(t *testing.T) {
			c := &task.Context{
				Internet: &v1alpha1.Internet{
					Spec: v1alpha1.InternetSpec{
						Provider: tc.providerType,
					},
				},
			}
			ctl := gomock.NewController(t)
			r := &InternetReconciler{aliyunCli: aliyun.NewMockClient(ctl)}
			tasks := GetInternetTasks(r, c)
			assert.Equal(t, tc.expectedTaskCount, len(tasks))
		})
	}
}
