// Code generated by mockery; DO NOT EDIT.
// github.com/vektra/mockery
// template: testify

package mocks

import (
	"context"

	"github.com/bangumi/server/internal/model"
	mock "github.com/stretchr/testify/mock"
)

// NewRevisionRepo creates a new instance of RevisionRepo. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewRevisionRepo(t interface {
	mock.TestingT
	Cleanup(func())
}) *RevisionRepo {
	mock := &RevisionRepo{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}

// RevisionRepo is an autogenerated mock type for the Repo type
type RevisionRepo struct {
	mock.Mock
}

type RevisionRepo_Expecter struct {
	mock *mock.Mock
}

func (_m *RevisionRepo) EXPECT() *RevisionRepo_Expecter {
	return &RevisionRepo_Expecter{mock: &_m.Mock}
}

// CountCharacterRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) CountCharacterRelated(ctx context.Context, characterID model.CharacterID) (int64, error) {
	ret := _mock.Called(ctx, characterID)

	if len(ret) == 0 {
		panic("no return value specified for CountCharacterRelated")
	}

	var r0 int64
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.CharacterID) (int64, error)); ok {
		return returnFunc(ctx, characterID)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.CharacterID) int64); ok {
		r0 = returnFunc(ctx, characterID)
	} else {
		r0 = ret.Get(0).(int64)
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.CharacterID) error); ok {
		r1 = returnFunc(ctx, characterID)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_CountCharacterRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CountCharacterRelated'
type RevisionRepo_CountCharacterRelated_Call struct {
	*mock.Call
}

// CountCharacterRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - characterID model.CharacterID
func (_e *RevisionRepo_Expecter) CountCharacterRelated(ctx interface{}, characterID interface{}) *RevisionRepo_CountCharacterRelated_Call {
	return &RevisionRepo_CountCharacterRelated_Call{Call: _e.mock.On("CountCharacterRelated", ctx, characterID)}
}

func (_c *RevisionRepo_CountCharacterRelated_Call) Run(run func(ctx context.Context, characterID model.CharacterID)) *RevisionRepo_CountCharacterRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.CharacterID
		if args[1] != nil {
			arg1 = args[1].(model.CharacterID)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *RevisionRepo_CountCharacterRelated_Call) Return(n int64, err error) *RevisionRepo_CountCharacterRelated_Call {
	_c.Call.Return(n, err)
	return _c
}

func (_c *RevisionRepo_CountCharacterRelated_Call) RunAndReturn(run func(ctx context.Context, characterID model.CharacterID) (int64, error)) *RevisionRepo_CountCharacterRelated_Call {
	_c.Call.Return(run)
	return _c
}

// CountEpisodeRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) CountEpisodeRelated(ctx context.Context, episodeID model.EpisodeID) (int64, error) {
	ret := _mock.Called(ctx, episodeID)

	if len(ret) == 0 {
		panic("no return value specified for CountEpisodeRelated")
	}

	var r0 int64
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.EpisodeID) (int64, error)); ok {
		return returnFunc(ctx, episodeID)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.EpisodeID) int64); ok {
		r0 = returnFunc(ctx, episodeID)
	} else {
		r0 = ret.Get(0).(int64)
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.EpisodeID) error); ok {
		r1 = returnFunc(ctx, episodeID)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_CountEpisodeRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CountEpisodeRelated'
type RevisionRepo_CountEpisodeRelated_Call struct {
	*mock.Call
}

// CountEpisodeRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - episodeID model.EpisodeID
func (_e *RevisionRepo_Expecter) CountEpisodeRelated(ctx interface{}, episodeID interface{}) *RevisionRepo_CountEpisodeRelated_Call {
	return &RevisionRepo_CountEpisodeRelated_Call{Call: _e.mock.On("CountEpisodeRelated", ctx, episodeID)}
}

func (_c *RevisionRepo_CountEpisodeRelated_Call) Run(run func(ctx context.Context, episodeID model.EpisodeID)) *RevisionRepo_CountEpisodeRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.EpisodeID
		if args[1] != nil {
			arg1 = args[1].(model.EpisodeID)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *RevisionRepo_CountEpisodeRelated_Call) Return(n int64, err error) *RevisionRepo_CountEpisodeRelated_Call {
	_c.Call.Return(n, err)
	return _c
}

func (_c *RevisionRepo_CountEpisodeRelated_Call) RunAndReturn(run func(ctx context.Context, episodeID model.EpisodeID) (int64, error)) *RevisionRepo_CountEpisodeRelated_Call {
	_c.Call.Return(run)
	return _c
}

// CountPersonRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) CountPersonRelated(ctx context.Context, personID model.PersonID) (int64, error) {
	ret := _mock.Called(ctx, personID)

	if len(ret) == 0 {
		panic("no return value specified for CountPersonRelated")
	}

	var r0 int64
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.PersonID) (int64, error)); ok {
		return returnFunc(ctx, personID)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.PersonID) int64); ok {
		r0 = returnFunc(ctx, personID)
	} else {
		r0 = ret.Get(0).(int64)
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.PersonID) error); ok {
		r1 = returnFunc(ctx, personID)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_CountPersonRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CountPersonRelated'
type RevisionRepo_CountPersonRelated_Call struct {
	*mock.Call
}

// CountPersonRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - personID model.PersonID
func (_e *RevisionRepo_Expecter) CountPersonRelated(ctx interface{}, personID interface{}) *RevisionRepo_CountPersonRelated_Call {
	return &RevisionRepo_CountPersonRelated_Call{Call: _e.mock.On("CountPersonRelated", ctx, personID)}
}

func (_c *RevisionRepo_CountPersonRelated_Call) Run(run func(ctx context.Context, personID model.PersonID)) *RevisionRepo_CountPersonRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.PersonID
		if args[1] != nil {
			arg1 = args[1].(model.PersonID)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *RevisionRepo_CountPersonRelated_Call) Return(n int64, err error) *RevisionRepo_CountPersonRelated_Call {
	_c.Call.Return(n, err)
	return _c
}

func (_c *RevisionRepo_CountPersonRelated_Call) RunAndReturn(run func(ctx context.Context, personID model.PersonID) (int64, error)) *RevisionRepo_CountPersonRelated_Call {
	_c.Call.Return(run)
	return _c
}

// CountSubjectRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) CountSubjectRelated(ctx context.Context, id model.SubjectID) (int64, error) {
	ret := _mock.Called(ctx, id)

	if len(ret) == 0 {
		panic("no return value specified for CountSubjectRelated")
	}

	var r0 int64
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.SubjectID) (int64, error)); ok {
		return returnFunc(ctx, id)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.SubjectID) int64); ok {
		r0 = returnFunc(ctx, id)
	} else {
		r0 = ret.Get(0).(int64)
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.SubjectID) error); ok {
		r1 = returnFunc(ctx, id)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_CountSubjectRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CountSubjectRelated'
type RevisionRepo_CountSubjectRelated_Call struct {
	*mock.Call
}

// CountSubjectRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - id model.SubjectID
func (_e *RevisionRepo_Expecter) CountSubjectRelated(ctx interface{}, id interface{}) *RevisionRepo_CountSubjectRelated_Call {
	return &RevisionRepo_CountSubjectRelated_Call{Call: _e.mock.On("CountSubjectRelated", ctx, id)}
}

func (_c *RevisionRepo_CountSubjectRelated_Call) Run(run func(ctx context.Context, id model.SubjectID)) *RevisionRepo_CountSubjectRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.SubjectID
		if args[1] != nil {
			arg1 = args[1].(model.SubjectID)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *RevisionRepo_CountSubjectRelated_Call) Return(n int64, err error) *RevisionRepo_CountSubjectRelated_Call {
	_c.Call.Return(n, err)
	return _c
}

func (_c *RevisionRepo_CountSubjectRelated_Call) RunAndReturn(run func(ctx context.Context, id model.SubjectID) (int64, error)) *RevisionRepo_CountSubjectRelated_Call {
	_c.Call.Return(run)
	return _c
}

// GetCharacterRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) GetCharacterRelated(ctx context.Context, id model.RevisionID) (model.CharacterRevision, error) {
	ret := _mock.Called(ctx, id)

	if len(ret) == 0 {
		panic("no return value specified for GetCharacterRelated")
	}

	var r0 model.CharacterRevision
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.RevisionID) (model.CharacterRevision, error)); ok {
		return returnFunc(ctx, id)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.RevisionID) model.CharacterRevision); ok {
		r0 = returnFunc(ctx, id)
	} else {
		r0 = ret.Get(0).(model.CharacterRevision)
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.RevisionID) error); ok {
		r1 = returnFunc(ctx, id)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_GetCharacterRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetCharacterRelated'
type RevisionRepo_GetCharacterRelated_Call struct {
	*mock.Call
}

// GetCharacterRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - id model.RevisionID
func (_e *RevisionRepo_Expecter) GetCharacterRelated(ctx interface{}, id interface{}) *RevisionRepo_GetCharacterRelated_Call {
	return &RevisionRepo_GetCharacterRelated_Call{Call: _e.mock.On("GetCharacterRelated", ctx, id)}
}

func (_c *RevisionRepo_GetCharacterRelated_Call) Run(run func(ctx context.Context, id model.RevisionID)) *RevisionRepo_GetCharacterRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.RevisionID
		if args[1] != nil {
			arg1 = args[1].(model.RevisionID)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *RevisionRepo_GetCharacterRelated_Call) Return(characterRevision model.CharacterRevision, err error) *RevisionRepo_GetCharacterRelated_Call {
	_c.Call.Return(characterRevision, err)
	return _c
}

func (_c *RevisionRepo_GetCharacterRelated_Call) RunAndReturn(run func(ctx context.Context, id model.RevisionID) (model.CharacterRevision, error)) *RevisionRepo_GetCharacterRelated_Call {
	_c.Call.Return(run)
	return _c
}

// GetEpisodeRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) GetEpisodeRelated(ctx context.Context, id model.RevisionID) (model.EpisodeRevision, error) {
	ret := _mock.Called(ctx, id)

	if len(ret) == 0 {
		panic("no return value specified for GetEpisodeRelated")
	}

	var r0 model.EpisodeRevision
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.RevisionID) (model.EpisodeRevision, error)); ok {
		return returnFunc(ctx, id)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.RevisionID) model.EpisodeRevision); ok {
		r0 = returnFunc(ctx, id)
	} else {
		r0 = ret.Get(0).(model.EpisodeRevision)
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.RevisionID) error); ok {
		r1 = returnFunc(ctx, id)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_GetEpisodeRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetEpisodeRelated'
type RevisionRepo_GetEpisodeRelated_Call struct {
	*mock.Call
}

// GetEpisodeRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - id model.RevisionID
func (_e *RevisionRepo_Expecter) GetEpisodeRelated(ctx interface{}, id interface{}) *RevisionRepo_GetEpisodeRelated_Call {
	return &RevisionRepo_GetEpisodeRelated_Call{Call: _e.mock.On("GetEpisodeRelated", ctx, id)}
}

func (_c *RevisionRepo_GetEpisodeRelated_Call) Run(run func(ctx context.Context, id model.RevisionID)) *RevisionRepo_GetEpisodeRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.RevisionID
		if args[1] != nil {
			arg1 = args[1].(model.RevisionID)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *RevisionRepo_GetEpisodeRelated_Call) Return(episodeRevision model.EpisodeRevision, err error) *RevisionRepo_GetEpisodeRelated_Call {
	_c.Call.Return(episodeRevision, err)
	return _c
}

func (_c *RevisionRepo_GetEpisodeRelated_Call) RunAndReturn(run func(ctx context.Context, id model.RevisionID) (model.EpisodeRevision, error)) *RevisionRepo_GetEpisodeRelated_Call {
	_c.Call.Return(run)
	return _c
}

// GetPersonRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) GetPersonRelated(ctx context.Context, id model.RevisionID) (model.PersonRevision, error) {
	ret := _mock.Called(ctx, id)

	if len(ret) == 0 {
		panic("no return value specified for GetPersonRelated")
	}

	var r0 model.PersonRevision
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.RevisionID) (model.PersonRevision, error)); ok {
		return returnFunc(ctx, id)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.RevisionID) model.PersonRevision); ok {
		r0 = returnFunc(ctx, id)
	} else {
		r0 = ret.Get(0).(model.PersonRevision)
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.RevisionID) error); ok {
		r1 = returnFunc(ctx, id)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_GetPersonRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetPersonRelated'
type RevisionRepo_GetPersonRelated_Call struct {
	*mock.Call
}

// GetPersonRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - id model.RevisionID
func (_e *RevisionRepo_Expecter) GetPersonRelated(ctx interface{}, id interface{}) *RevisionRepo_GetPersonRelated_Call {
	return &RevisionRepo_GetPersonRelated_Call{Call: _e.mock.On("GetPersonRelated", ctx, id)}
}

func (_c *RevisionRepo_GetPersonRelated_Call) Run(run func(ctx context.Context, id model.RevisionID)) *RevisionRepo_GetPersonRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.RevisionID
		if args[1] != nil {
			arg1 = args[1].(model.RevisionID)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *RevisionRepo_GetPersonRelated_Call) Return(personRevision model.PersonRevision, err error) *RevisionRepo_GetPersonRelated_Call {
	_c.Call.Return(personRevision, err)
	return _c
}

func (_c *RevisionRepo_GetPersonRelated_Call) RunAndReturn(run func(ctx context.Context, id model.RevisionID) (model.PersonRevision, error)) *RevisionRepo_GetPersonRelated_Call {
	_c.Call.Return(run)
	return _c
}

// GetSubjectRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) GetSubjectRelated(ctx context.Context, id model.RevisionID) (model.SubjectRevision, error) {
	ret := _mock.Called(ctx, id)

	if len(ret) == 0 {
		panic("no return value specified for GetSubjectRelated")
	}

	var r0 model.SubjectRevision
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.RevisionID) (model.SubjectRevision, error)); ok {
		return returnFunc(ctx, id)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.RevisionID) model.SubjectRevision); ok {
		r0 = returnFunc(ctx, id)
	} else {
		r0 = ret.Get(0).(model.SubjectRevision)
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.RevisionID) error); ok {
		r1 = returnFunc(ctx, id)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_GetSubjectRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetSubjectRelated'
type RevisionRepo_GetSubjectRelated_Call struct {
	*mock.Call
}

// GetSubjectRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - id model.RevisionID
func (_e *RevisionRepo_Expecter) GetSubjectRelated(ctx interface{}, id interface{}) *RevisionRepo_GetSubjectRelated_Call {
	return &RevisionRepo_GetSubjectRelated_Call{Call: _e.mock.On("GetSubjectRelated", ctx, id)}
}

func (_c *RevisionRepo_GetSubjectRelated_Call) Run(run func(ctx context.Context, id model.RevisionID)) *RevisionRepo_GetSubjectRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.RevisionID
		if args[1] != nil {
			arg1 = args[1].(model.RevisionID)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *RevisionRepo_GetSubjectRelated_Call) Return(subjectRevision model.SubjectRevision, err error) *RevisionRepo_GetSubjectRelated_Call {
	_c.Call.Return(subjectRevision, err)
	return _c
}

func (_c *RevisionRepo_GetSubjectRelated_Call) RunAndReturn(run func(ctx context.Context, id model.RevisionID) (model.SubjectRevision, error)) *RevisionRepo_GetSubjectRelated_Call {
	_c.Call.Return(run)
	return _c
}

// ListCharacterRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) ListCharacterRelated(ctx context.Context, characterID model.CharacterID, limit int, offset int) ([]model.CharacterRevision, error) {
	ret := _mock.Called(ctx, characterID, limit, offset)

	if len(ret) == 0 {
		panic("no return value specified for ListCharacterRelated")
	}

	var r0 []model.CharacterRevision
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.CharacterID, int, int) ([]model.CharacterRevision, error)); ok {
		return returnFunc(ctx, characterID, limit, offset)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.CharacterID, int, int) []model.CharacterRevision); ok {
		r0 = returnFunc(ctx, characterID, limit, offset)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]model.CharacterRevision)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.CharacterID, int, int) error); ok {
		r1 = returnFunc(ctx, characterID, limit, offset)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_ListCharacterRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ListCharacterRelated'
type RevisionRepo_ListCharacterRelated_Call struct {
	*mock.Call
}

// ListCharacterRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - characterID model.CharacterID
//   - limit int
//   - offset int
func (_e *RevisionRepo_Expecter) ListCharacterRelated(ctx interface{}, characterID interface{}, limit interface{}, offset interface{}) *RevisionRepo_ListCharacterRelated_Call {
	return &RevisionRepo_ListCharacterRelated_Call{Call: _e.mock.On("ListCharacterRelated", ctx, characterID, limit, offset)}
}

func (_c *RevisionRepo_ListCharacterRelated_Call) Run(run func(ctx context.Context, characterID model.CharacterID, limit int, offset int)) *RevisionRepo_ListCharacterRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.CharacterID
		if args[1] != nil {
			arg1 = args[1].(model.CharacterID)
		}
		var arg2 int
		if args[2] != nil {
			arg2 = args[2].(int)
		}
		var arg3 int
		if args[3] != nil {
			arg3 = args[3].(int)
		}
		run(
			arg0,
			arg1,
			arg2,
			arg3,
		)
	})
	return _c
}

func (_c *RevisionRepo_ListCharacterRelated_Call) Return(characterRevisions []model.CharacterRevision, err error) *RevisionRepo_ListCharacterRelated_Call {
	_c.Call.Return(characterRevisions, err)
	return _c
}

func (_c *RevisionRepo_ListCharacterRelated_Call) RunAndReturn(run func(ctx context.Context, characterID model.CharacterID, limit int, offset int) ([]model.CharacterRevision, error)) *RevisionRepo_ListCharacterRelated_Call {
	_c.Call.Return(run)
	return _c
}

// ListEpisodeRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) ListEpisodeRelated(ctx context.Context, episodeID model.EpisodeID, limit int, offset int) ([]model.EpisodeRevision, error) {
	ret := _mock.Called(ctx, episodeID, limit, offset)

	if len(ret) == 0 {
		panic("no return value specified for ListEpisodeRelated")
	}

	var r0 []model.EpisodeRevision
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.EpisodeID, int, int) ([]model.EpisodeRevision, error)); ok {
		return returnFunc(ctx, episodeID, limit, offset)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.EpisodeID, int, int) []model.EpisodeRevision); ok {
		r0 = returnFunc(ctx, episodeID, limit, offset)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]model.EpisodeRevision)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.EpisodeID, int, int) error); ok {
		r1 = returnFunc(ctx, episodeID, limit, offset)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_ListEpisodeRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ListEpisodeRelated'
type RevisionRepo_ListEpisodeRelated_Call struct {
	*mock.Call
}

// ListEpisodeRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - episodeID model.EpisodeID
//   - limit int
//   - offset int
func (_e *RevisionRepo_Expecter) ListEpisodeRelated(ctx interface{}, episodeID interface{}, limit interface{}, offset interface{}) *RevisionRepo_ListEpisodeRelated_Call {
	return &RevisionRepo_ListEpisodeRelated_Call{Call: _e.mock.On("ListEpisodeRelated", ctx, episodeID, limit, offset)}
}

func (_c *RevisionRepo_ListEpisodeRelated_Call) Run(run func(ctx context.Context, episodeID model.EpisodeID, limit int, offset int)) *RevisionRepo_ListEpisodeRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.EpisodeID
		if args[1] != nil {
			arg1 = args[1].(model.EpisodeID)
		}
		var arg2 int
		if args[2] != nil {
			arg2 = args[2].(int)
		}
		var arg3 int
		if args[3] != nil {
			arg3 = args[3].(int)
		}
		run(
			arg0,
			arg1,
			arg2,
			arg3,
		)
	})
	return _c
}

func (_c *RevisionRepo_ListEpisodeRelated_Call) Return(episodeRevisions []model.EpisodeRevision, err error) *RevisionRepo_ListEpisodeRelated_Call {
	_c.Call.Return(episodeRevisions, err)
	return _c
}

func (_c *RevisionRepo_ListEpisodeRelated_Call) RunAndReturn(run func(ctx context.Context, episodeID model.EpisodeID, limit int, offset int) ([]model.EpisodeRevision, error)) *RevisionRepo_ListEpisodeRelated_Call {
	_c.Call.Return(run)
	return _c
}

// ListPersonRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) ListPersonRelated(ctx context.Context, personID model.PersonID, limit int, offset int) ([]model.PersonRevision, error) {
	ret := _mock.Called(ctx, personID, limit, offset)

	if len(ret) == 0 {
		panic("no return value specified for ListPersonRelated")
	}

	var r0 []model.PersonRevision
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.PersonID, int, int) ([]model.PersonRevision, error)); ok {
		return returnFunc(ctx, personID, limit, offset)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.PersonID, int, int) []model.PersonRevision); ok {
		r0 = returnFunc(ctx, personID, limit, offset)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]model.PersonRevision)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.PersonID, int, int) error); ok {
		r1 = returnFunc(ctx, personID, limit, offset)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_ListPersonRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ListPersonRelated'
type RevisionRepo_ListPersonRelated_Call struct {
	*mock.Call
}

// ListPersonRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - personID model.PersonID
//   - limit int
//   - offset int
func (_e *RevisionRepo_Expecter) ListPersonRelated(ctx interface{}, personID interface{}, limit interface{}, offset interface{}) *RevisionRepo_ListPersonRelated_Call {
	return &RevisionRepo_ListPersonRelated_Call{Call: _e.mock.On("ListPersonRelated", ctx, personID, limit, offset)}
}

func (_c *RevisionRepo_ListPersonRelated_Call) Run(run func(ctx context.Context, personID model.PersonID, limit int, offset int)) *RevisionRepo_ListPersonRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.PersonID
		if args[1] != nil {
			arg1 = args[1].(model.PersonID)
		}
		var arg2 int
		if args[2] != nil {
			arg2 = args[2].(int)
		}
		var arg3 int
		if args[3] != nil {
			arg3 = args[3].(int)
		}
		run(
			arg0,
			arg1,
			arg2,
			arg3,
		)
	})
	return _c
}

func (_c *RevisionRepo_ListPersonRelated_Call) Return(personRevisions []model.PersonRevision, err error) *RevisionRepo_ListPersonRelated_Call {
	_c.Call.Return(personRevisions, err)
	return _c
}

func (_c *RevisionRepo_ListPersonRelated_Call) RunAndReturn(run func(ctx context.Context, personID model.PersonID, limit int, offset int) ([]model.PersonRevision, error)) *RevisionRepo_ListPersonRelated_Call {
	_c.Call.Return(run)
	return _c
}

// ListSubjectRelated provides a mock function for the type RevisionRepo
func (_mock *RevisionRepo) ListSubjectRelated(ctx context.Context, id model.SubjectID, limit int, offset int) ([]model.SubjectRevision, error) {
	ret := _mock.Called(ctx, id, limit, offset)

	if len(ret) == 0 {
		panic("no return value specified for ListSubjectRelated")
	}

	var r0 []model.SubjectRevision
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.SubjectID, int, int) ([]model.SubjectRevision, error)); ok {
		return returnFunc(ctx, id, limit, offset)
	}
	if returnFunc, ok := ret.Get(0).(func(context.Context, model.SubjectID, int, int) []model.SubjectRevision); ok {
		r0 = returnFunc(ctx, id, limit, offset)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]model.SubjectRevision)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(context.Context, model.SubjectID, int, int) error); ok {
		r1 = returnFunc(ctx, id, limit, offset)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// RevisionRepo_ListSubjectRelated_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ListSubjectRelated'
type RevisionRepo_ListSubjectRelated_Call struct {
	*mock.Call
}

// ListSubjectRelated is a helper method to define mock.On call
//   - ctx context.Context
//   - id model.SubjectID
//   - limit int
//   - offset int
func (_e *RevisionRepo_Expecter) ListSubjectRelated(ctx interface{}, id interface{}, limit interface{}, offset interface{}) *RevisionRepo_ListSubjectRelated_Call {
	return &RevisionRepo_ListSubjectRelated_Call{Call: _e.mock.On("ListSubjectRelated", ctx, id, limit, offset)}
}

func (_c *RevisionRepo_ListSubjectRelated_Call) Run(run func(ctx context.Context, id model.SubjectID, limit int, offset int)) *RevisionRepo_ListSubjectRelated_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 model.SubjectID
		if args[1] != nil {
			arg1 = args[1].(model.SubjectID)
		}
		var arg2 int
		if args[2] != nil {
			arg2 = args[2].(int)
		}
		var arg3 int
		if args[3] != nil {
			arg3 = args[3].(int)
		}
		run(
			arg0,
			arg1,
			arg2,
			arg3,
		)
	})
	return _c
}

func (_c *RevisionRepo_ListSubjectRelated_Call) Return(subjectRevisions []model.SubjectRevision, err error) *RevisionRepo_ListSubjectRelated_Call {
	_c.Call.Return(subjectRevisions, err)
	return _c
}

func (_c *RevisionRepo_ListSubjectRelated_Call) RunAndReturn(run func(ctx context.Context, id model.SubjectID, limit int, offset int) ([]model.SubjectRevision, error)) *RevisionRepo_ListSubjectRelated_Call {
	_c.Call.Return(run)
	return _c
}
