package mockapi

import (
	"github.com/stretchr/testify/mock"

	"github.com/tidbcloud/observability/agent-control-server/pkg/o11y"
	"github.com/tidbcloud/observability/agent-control-server/pkg/o11y/api"
)

type MockO11yAPI struct {
	mock.Mock
}

func (m *MockO11yAPI) Create(p o11y.Params) (*api.ObservabilityCluster, error) {
	args := m.Called(p)
	if args.Get(0) == nil {
		return nil, args.Error(1)
	}
	return args.Get(0).(*api.ObservabilityCluster), args.Error(1)
}

func (m *MockO11yAPI) Delete(p o11y.Params) (*api.ObservabilityCluster, error) {
	args := m.Called(p)
	if args.Get(0) == nil {
		return nil, args.Error(1)
	}
	return args.Get(0).(*api.ObservabilityCluster), args.Error(1)
}

func (m *MockO11yAPI) List(p o11y.Params) ([]api.ClusterBaseInfo, error) {
	args := m.Called(p)
	if args.Get(0) == nil {
		return nil, args.Error(1)
	}
	return args.Get(0).([]api.ClusterBaseInfo), args.Error(1)
}

func (m *MockO11yAPI) Pause(p o11y.Params) (*api.ObservabilityCluster, error) {
	args := m.Called(p)
	if args.Get(0) == nil {
		return nil, args.Error(1)
	}
	return args.Get(0).(*api.ObservabilityCluster), args.Error(1)
}

func (m *MockO11yAPI) Resume(p o11y.Params) (*api.ObservabilityCluster, error) {
	args := m.Called(p)
	if args.Get(0) == nil {
		return nil, args.Error(1)
	}
	return args.Get(0).(*api.ObservabilityCluster), args.Error(1)
}

func (m *MockO11yAPI) GetByID(p o11y.Params) (*api.ObservabilityCluster, error) {
	args := m.Called(p)
	if args.Get(0) == nil {
		return nil, args.Error(1)
	}
	return args.Get(0).(*api.ObservabilityCluster), args.Error(1)
}
