package server

import (
	"testing"

	apiv1 "github.com/tidbcloud/cluster-service-ng/api/cluster-service-ng/v1beta"
	"github.com/tidbcloud/cluster-service-ng/domain/entity"
)

func TestRestoreFailureOutputSource(t *testing.T) {
	tests := []struct {
		name   string
		source string
		want   apiv1.RestoreFailureSource
	}{
		{name: "empty source keeps legacy control plane default", want: apiv1.RestoreFailureSource_CONTROL_PLANE},
		{name: "kernel source", source: entity.RestoreFailureSourceKernel, want: apiv1.RestoreFailureSource_KERNEL},
		{name: "control plane source", source: entity.RestoreFailureSourceControlPlane, want: apiv1.RestoreFailureSource_CONTROL_PLANE},
		{name: "unknown source", source: "unexpected", want: apiv1.RestoreFailureSource_RESTORE_FAILURE_SOURCE_UNSPECIFIED},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			failure := restoreFailureOutput(tt.source, "CODE", "message")
			if failure.Source != tt.want {
				t.Fatalf("restoreFailureOutput(%q).Source = %v, want %v", tt.source, failure.Source, tt.want)
			}
		})
	}
}
