// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/tidbcloud/devops/pkg/service/approval/repo (interfaces: ApprovalRepo)
//
// Generated by this command:
//
//	mockgen -destination repo_mock.go -package=repo github.com/tidbcloud/devops/pkg/service/approval/repo ApprovalRepo
//

// Package repo is a generated GoMock package.
package repo

import (
	context "context"
	reflect "reflect"

	entity "github.com/tidbcloud/devops/entity/approval"
	repoopt "github.com/tidbcloud/devops/pkg/infra/utils/repoopt"
	gomock "go.uber.org/mock/gomock"
)

// MockApprovalRepo is a mock of ApprovalRepo interface.
type MockApprovalRepo struct {
	ctrl     *gomock.Controller
	recorder *MockApprovalRepoMockRecorder
	isgomock struct{}
}

// MockApprovalRepoMockRecorder is the mock recorder for MockApprovalRepo.
type MockApprovalRepoMockRecorder struct {
	mock *MockApprovalRepo
}

// NewMockApprovalRepo creates a new mock instance.
func NewMockApprovalRepo(ctrl *gomock.Controller) *MockApprovalRepo {
	mock := &MockApprovalRepo{ctrl: ctrl}
	mock.recorder = &MockApprovalRepoMockRecorder{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockApprovalRepo) EXPECT() *MockApprovalRepoMockRecorder {
	return m.recorder
}

// CountApproval mocks base method.
func (m *MockApprovalRepo) CountApproval(ctx context.Context, opts ...repoopt.Option) (int64, error) {
	m.ctrl.T.Helper()
	varargs := []any{ctx}
	for _, a := range opts {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "CountApproval", varargs...)
	ret0, _ := ret[0].(int64)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// CountApproval indicates an expected call of CountApproval.
func (mr *MockApprovalRepoMockRecorder) CountApproval(ctx any, opts ...any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]any{ctx}, opts...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CountApproval", reflect.TypeOf((*MockApprovalRepo)(nil).CountApproval), varargs...)
}

// CreateApproval mocks base method.
func (m *MockApprovalRepo) CreateApproval(ctx context.Context, approval *entity.Approval) (*entity.Approval, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "CreateApproval", ctx, approval)
	ret0, _ := ret[0].(*entity.Approval)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// CreateApproval indicates an expected call of CreateApproval.
func (mr *MockApprovalRepoMockRecorder) CreateApproval(ctx, approval any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateApproval", reflect.TypeOf((*MockApprovalRepo)(nil).CreateApproval), ctx, approval)
}

// GetApproval mocks base method.
func (m *MockApprovalRepo) GetApproval(ctx context.Context, id uint64) (*entity.Approval, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetApproval", ctx, id)
	ret0, _ := ret[0].(*entity.Approval)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// GetApproval indicates an expected call of GetApproval.
func (mr *MockApprovalRepoMockRecorder) GetApproval(ctx, id any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetApproval", reflect.TypeOf((*MockApprovalRepo)(nil).GetApproval), ctx, id)
}

// ListApprovals mocks base method.
func (m *MockApprovalRepo) ListApprovals(ctx context.Context, opts ...repoopt.Option) ([]*entity.Approval, error) {
	m.ctrl.T.Helper()
	varargs := []any{ctx}
	for _, a := range opts {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "ListApprovals", varargs...)
	ret0, _ := ret[0].([]*entity.Approval)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ListApprovals indicates an expected call of ListApprovals.
func (mr *MockApprovalRepoMockRecorder) ListApprovals(ctx any, opts ...any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]any{ctx}, opts...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListApprovals", reflect.TypeOf((*MockApprovalRepo)(nil).ListApprovals), varargs...)
}

// PatchApproval mocks base method.
func (m *MockApprovalRepo) PatchApproval(ctx context.Context, current *entity.Approval, patch ...PatchApproval) (*entity.Approval, error) {
	m.ctrl.T.Helper()
	varargs := []any{ctx, current}
	for _, a := range patch {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "PatchApproval", varargs...)
	ret0, _ := ret[0].(*entity.Approval)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// PatchApproval indicates an expected call of PatchApproval.
func (mr *MockApprovalRepoMockRecorder) PatchApproval(ctx, current any, patch ...any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]any{ctx, current}, patch...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchApproval", reflect.TypeOf((*MockApprovalRepo)(nil).PatchApproval), varargs...)
}

// UpdateApproval mocks base method.
func (m *MockApprovalRepo) UpdateApproval(ctx context.Context, approval *entity.Approval) (*entity.Approval, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UpdateApproval", ctx, approval)
	ret0, _ := ret[0].(*entity.Approval)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// UpdateApproval indicates an expected call of UpdateApproval.
func (mr *MockApprovalRepoMockRecorder) UpdateApproval(ctx, approval any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateApproval", reflect.TypeOf((*MockApprovalRepo)(nil).UpdateApproval), ctx, approval)
}
