package task

import (
	"reflect"
	"testing"

	"github.com/tidbcloud/infra-provider/pkg/namer"
	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func TestContextDefault(t *testing.T) {
	type args struct {
		vpc *v1alpha1.VPC
	}
	cases := map[string]struct {
		args    args
		want    *Context
		wantErr bool
	}{
		"NormalVPC": {
			args: args{
				vpc: &v1alpha1.VPC{
					ObjectMeta: metav1.ObjectMeta{
						Name:      "test",
						Namespace: "test-ns",
					},
				},
			},
			want: &Context{
				Namer: namer.NewNamer().LegacyWithNetworkName("test").LegacyWithNetworkNamespace("test-ns"),
			},
			wantErr: false,
		},
	}

	for name, tc := range cases {
		t.Run(name, func(t *testing.T) {
			ctx := &Context{
				VPC: tc.args.vpc,
			}
			got, err := ctx.Default()
			if (err != nil) != tc.wantErr {
				t.Errorf("Context.Default() error = %v, wantErr %v", err, tc.wantErr)
				return
			}

			if !reflect.DeepEqual(got.Namer.Labels(), tc.want.Namer.Labels()) {
				t.Errorf("Context.Default() got = %v, want %v", got.Namer.Labels(), tc.want.Namer.Labels())
			}
		})
	}
}
