package regionalapi

import (
	"net/url"
	"testing"

	"github.com/stretchr/testify/assert"
	ticdc_v1 "github.com/tidbcloud/infra-provider/api/tidbcloud/ticdc-service/v1"
	"google.golang.org/protobuf/proto"
)

func TestProto2QueryParams(t *testing.T) {
	testcases := []struct {
		obj            proto.Message
		expectedParams url.Values
	}{
		{
			obj:            nil,
			expectedParams: map[string][]string{},
		},
		{
			obj: &ticdc_v1.ListTiCDCClustersRequest{
				TenantId: "1",
			},
			expectedParams: map[string][]string{
				"tenantId": {"1"},
			},
		},
		{
			obj: &ticdc_v1.ListTiCDCClustersRequest{
				TenantId:       "1",
				ProjectId:      "11",
				TicdcClusterId: []string{"111", "112", "113"},
			},
			expectedParams: map[string][]string{
				"tenantId":       {"1"},
				"projectId":      {"11"},
				"ticdcClusterId": {"111", "112", "113"},
			},
		},
	}

	for _, tc := range testcases {
		params, err := proto2QueryParams(tc.obj)
		assert.NoError(t, err, "obj", tc.obj)
		assert.Equal(t, tc.expectedParams, params, "obj", tc.obj)
	}
}
