package globalservice

import (
	"context"
	"testing"

	"github.com/tidbcloud/observability/pkg/common/message"
	"github.com/tidbcloud/observability/pkg/common/structs"
	"github.com/tidbcloud/observability/pkg/metamanager/s3"
	mock_meta_manager "github.com/tidbcloud/observability/test/mockmetamanager"
	"go.uber.org/mock/gomock"

	"github.com/stretchr/testify/assert"
)

func TestGetModelHandler(t *testing.T) {
	assert.NotNil(t, GetModelHandler())
}

func TestCreateModel(t *testing.T) {
	ctrl := gomock.NewController(t)

	mock := mock_meta_manager.NewMockModelMeta(ctrl)
	s3.MockModelMeta(mock)
	mock.EXPECT().SaveMeta(gomock.Any(), gomock.Any()).Return(nil)
	_, err := GetModelHandler().CreateModel(context.TODO(), message.CreateModelReq{})
	assert.NoError(t, err)
}

func TestGetModel(t *testing.T) {
	ctrl := gomock.NewController(t)

	mock := mock_meta_manager.NewMockModelMeta(ctrl)
	s3.MockModelMeta(mock)
	mock.EXPECT().GetMeta(gomock.Any(), gomock.Any(), gomock.Any()).Return(structs.Model{
		Name: "aaa",
	}, nil)
	resp, err := GetModelHandler().GetModel(context.TODO(), message.GetModelReq{})
	assert.NoError(t, err)
	assert.Equal(t, "aaa", resp.Name)

}
