package api

import (
	"context"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/stretchr/testify/assert"
	"github.com/tidbcloud/ticdc-service/pkg/clusterproxy/client/mocks"
)

func TestGetPDSafepoint(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()

	mockClient := mocks.NewMockClient(ctrl)
	pdClient := NewPdClient(mockClient)

	ctx := context.Background()
	expectedSafepoint := &Safepoint{SP: 12345}

	mockClient.EXPECT().Request(gomock.Any(), "GET", "/pd/pd/api/v1/gc/safepoint", nil, gomock.Any()).DoAndReturn(
		func(ctx context.Context, method, path string, body, dest interface{}) error {
			*dest.(*Safepoint) = *expectedSafepoint
			return nil
		},
	).Times(1)

	safepoint, err := pdClient.GetPDSafepoint(ctx)
	assert.NoError(t, err)
	assert.Equal(t, expectedSafepoint, safepoint)
}
