package cluster

import (
	"testing"

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

func TestSupportsVolumeAttributesClass(t *testing.T) {
	tests := []struct {
		provider           string
		version            string
		usesTiDBOperatorV2 bool
		want               bool
	}{
		{provider: cloudv1.ProviderTypeEKS},
		{provider: cloudv1.ProviderTypeEKS, version: "invalid"},
		{provider: cloudv1.ProviderTypeEKS, version: "1.29"},
		{provider: cloudv1.ProviderTypeEKS, version: "1.30"},
		{provider: cloudv1.ProviderTypeEKS, version: "1.31", want: true},
		{provider: cloudv1.ProviderTypeEKS, version: "1.32", want: true},
		{provider: cloudv1.ProviderTypeEKS, version: "1.33", want: true},
		{provider: cloudv1.ProviderTypeGKE, version: "1.33"},
		{provider: cloudv1.ProviderTypeGKE, version: "1.34", want: true},
		{provider: cloudv1.ProviderTypeGKE, version: "1.34.1-gke.100", want: true},
		{provider: cloudv1.ProviderTypeGKE, version: "1.34", usesTiDBOperatorV2: true},
		{provider: cloudv1.ProviderTypeAKS, version: "1.34"},
	}
	for _, tt := range tests {
		name := tt.provider + "/" + tt.version
		if tt.usesTiDBOperatorV2 {
			name += "/operator-v2"
		}
		t.Run(name, func(t *testing.T) {
			if got := supportsVolumeAttributesClass(tt.provider, tt.version, tt.usesTiDBOperatorV2); got != tt.want {
				t.Errorf("supportsVolumeAttributesClass() = %v, want %v", got, tt.want)
			}
		})
	}
}
