package cluster

import (
	"testing"

	"github.com/stretchr/testify/require"

	globalngv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/nextgen/v1"
	"github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/entity"
)

func TestConvertBindingToStatusProtoRestoreStates(t *testing.T) {
	tests := []struct {
		name  string
		state entity.ClusterEncryptionBindingState
		want  globalngv1.ClusterEncryptionStatus_State
	}{
		{name: "pending restore", state: entity.ClusterEncryptionBindingStatePendingRestore, want: globalngv1.ClusterEncryptionStatus_MODIFYING},
		{
			name:  "restore failed",
			state: entity.ClusterEncryptionBindingStateRestoreFailed,
			want:  globalngv1.ClusterEncryptionStatus_STATE_UNSPECIFIED,
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			status := convertBindingToStatusProto(&entity.ClusterEncryptionBinding{
				ClusterId: 1,
				State:     tt.state,
				Message:   "restore status",
			})
			require.Equal(t, tt.want, status.State)
			require.Equal(t, "restore status", status.Message)
		})
	}
}
