package common

import (
	"testing"

	"github.com/pingcap/tidb-operator/pkg/apis/label"
)

func TestGePvcNameFromPodName(t *testing.T) {
	tests := []struct {
		name    string
		pvcName string
		label   map[string]string
		want    string
	}{
		{
			name:    "tidb_with_anno",
			pvcName: "tidb-slowlog-db-tidb-0",
			label: map[string]string{
				label.AnnPodNameKey: "db-tidb-0",
			},
			want: "db-tidb-0",
		},
		{
			name:    "tidb_without_anno",
			pvcName: "tidb-slowlog-db-tidb-0",
			label:   nil,
			want:    "db-tidb-0",
		},

		{
			name:    "pd_with_anno",
			pvcName: "pd-db-pd-0",
			label: map[string]string{
				label.AnnPodNameKey: "db-pd-0",
			},
			want: "db-pd-0",
		},
		{
			name:    "pd_without_anno",
			pvcName: "pd-db-pd-0",
			label:   nil,
			want:    "db-pd-0",
		},

		{
			name:    "tikv_with_anno",
			pvcName: "tikv-db-tikv-0",
			label: map[string]string{
				label.AnnPodNameKey: "db-tikv-0",
			},
			want: "db-tikv-0",
		},
		{
			name:    "tikv_without_anno",
			pvcName: "tikv-db-tikv-0",
			label:   nil,
			want:    "db-tikv-0",
		},

		{
			name:    "tikv_raftlog_with_anno",
			pvcName: "tikv-raftlog-db-tikv-0",
			label: map[string]string{
				label.AnnPodNameKey: "db-tikv-0",
			},
			want: "db-tikv-0",
		},
		{
			name:    "tidb_without_anno",
			pvcName: "tikv-raftlog-db-tikv-0",
			label:   nil,
			want:    "db-tikv-0",
		},
		{
			name:    "tiflash_without_anno",
			pvcName: "data0-db-tiflash-2",
			label:   nil,
			want:    "db-tiflash-2",
		},
		{
			name:    "tiflash_with_anno",
			pvcName: "data0-db-tiflash-2",
			label: map[string]string{
				label.AnnPodNameKey: "db-tiflash-2",
			},
			want: "db-tiflash-2",
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := extractPodNameFromPvcName(tt.pvcName, tt.label); got != tt.want {
				t.Errorf("name: %s, extractPodNameFromPvcName() = %v, want %v", tt.name, got, tt.want)
			}
		})
	}
}
