// Code generated by go-mockgen 1.3.7; DO NOT EDIT.
//
// This file was generated by running `go-mockgen` at the root of this repository.
// To add additional mocks to this or another package, add a new entry to the
// mockgen.yaml file in the root of this repository.

package lfs

import (
	"context"
	"sync"

	db "gogs.io/gogs/internal/db"
	lfsutil "gogs.io/gogs/internal/lfsutil"
)

// MockAccessTokensStore is a mock implementation of the AccessTokensStore
// interface (from the package gogs.io/gogs/internal/db) used for unit
// testing.
type MockAccessTokensStore struct {
	// CreateFunc is an instance of a mock function object controlling the
	// behavior of the method Create.
	CreateFunc *AccessTokensStoreCreateFunc
	// DeleteByIDFunc is an instance of a mock function object controlling
	// the behavior of the method DeleteByID.
	DeleteByIDFunc *AccessTokensStoreDeleteByIDFunc
	// GetBySHA1Func is an instance of a mock function object controlling
	// the behavior of the method GetBySHA1.
	GetBySHA1Func *AccessTokensStoreGetBySHA1Func
	// ListFunc is an instance of a mock function object controlling the
	// behavior of the method List.
	ListFunc *AccessTokensStoreListFunc
	// TouchFunc is an instance of a mock function object controlling the
	// behavior of the method Touch.
	TouchFunc *AccessTokensStoreTouchFunc
}

// NewMockAccessTokensStore creates a new mock of the AccessTokensStore
// interface. All methods return zero values for all results, unless
// overwritten.
func NewMockAccessTokensStore() *MockAccessTokensStore {
	return &MockAccessTokensStore{
		CreateFunc: &AccessTokensStoreCreateFunc{
			defaultHook: func(context.Context, int64, string) (r0 *db.AccessToken, r1 error) {
				return
			},
		},
		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
			defaultHook: func(context.Context, int64, int64) (r0 error) {
				return
			},
		},
		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
			defaultHook: func(context.Context, string) (r0 *db.AccessToken, r1 error) {
				return
			},
		},
		ListFunc: &AccessTokensStoreListFunc{
			defaultHook: func(context.Context, int64) (r0 []*db.AccessToken, r1 error) {
				return
			},
		},
		TouchFunc: &AccessTokensStoreTouchFunc{
			defaultHook: func(context.Context, int64) (r0 error) {
				return
			},
		},
	}
}

// NewStrictMockAccessTokensStore creates a new mock of the
// AccessTokensStore interface. All methods panic on invocation, unless
// overwritten.
func NewStrictMockAccessTokensStore() *MockAccessTokensStore {
	return &MockAccessTokensStore{
		CreateFunc: &AccessTokensStoreCreateFunc{
			defaultHook: func(context.Context, int64, string) (*db.AccessToken, error) {
				panic("unexpected invocation of MockAccessTokensStore.Create")
			},
		},
		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
			defaultHook: func(context.Context, int64, int64) error {
				panic("unexpected invocation of MockAccessTokensStore.DeleteByID")
			},
		},
		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
			defaultHook: func(context.Context, string) (*db.AccessToken, error) {
				panic("unexpected invocation of MockAccessTokensStore.GetBySHA1")
			},
		},
		ListFunc: &AccessTokensStoreListFunc{
			defaultHook: func(context.Context, int64) ([]*db.AccessToken, error) {
				panic("unexpected invocation of MockAccessTokensStore.List")
			},
		},
		TouchFunc: &AccessTokensStoreTouchFunc{
			defaultHook: func(context.Context, int64) error {
				panic("unexpected invocation of MockAccessTokensStore.Touch")
			},
		},
	}
}

// NewMockAccessTokensStoreFrom creates a new mock of the
// MockAccessTokensStore interface. All methods delegate to the given
// implementation, unless overwritten.
func NewMockAccessTokensStoreFrom(i db.AccessTokensStore) *MockAccessTokensStore {
	return &MockAccessTokensStore{
		CreateFunc: &AccessTokensStoreCreateFunc{
			defaultHook: i.Create,
		},
		DeleteByIDFunc: &AccessTokensStoreDeleteByIDFunc{
			defaultHook: i.DeleteByID,
		},
		GetBySHA1Func: &AccessTokensStoreGetBySHA1Func{
			defaultHook: i.GetBySHA1,
		},
		ListFunc: &AccessTokensStoreListFunc{
			defaultHook: i.List,
		},
		TouchFunc: &AccessTokensStoreTouchFunc{
			defaultHook: i.Touch,
		},
	}
}

// AccessTokensStoreCreateFunc describes the behavior when the Create method
// of the parent MockAccessTokensStore instance is invoked.
type AccessTokensStoreCreateFunc struct {
	defaultHook func(context.Context, int64, string) (*db.AccessToken, error)
	hooks       []func(context.Context, int64, string) (*db.AccessToken, error)
	history     []AccessTokensStoreCreateFuncCall
	mutex       sync.Mutex
}

// Create delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockAccessTokensStore) Create(v0 context.Context, v1 int64, v2 string) (*db.AccessToken, error) {
	r0, r1 := m.CreateFunc.nextHook()(v0, v1, v2)
	m.CreateFunc.appendCall(AccessTokensStoreCreateFuncCall{v0, v1, v2, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the Create method of the
// parent MockAccessTokensStore instance is invoked and the hook queue is
// empty.
func (f *AccessTokensStoreCreateFunc) SetDefaultHook(hook func(context.Context, int64, string) (*db.AccessToken, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Create method of the parent MockAccessTokensStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *AccessTokensStoreCreateFunc) PushHook(hook func(context.Context, int64, string) (*db.AccessToken, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *AccessTokensStoreCreateFunc) SetDefaultReturn(r0 *db.AccessToken, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, string) (*db.AccessToken, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *AccessTokensStoreCreateFunc) PushReturn(r0 *db.AccessToken, r1 error) {
	f.PushHook(func(context.Context, int64, string) (*db.AccessToken, error) {
		return r0, r1
	})
}

func (f *AccessTokensStoreCreateFunc) nextHook() func(context.Context, int64, string) (*db.AccessToken, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *AccessTokensStoreCreateFunc) appendCall(r0 AccessTokensStoreCreateFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of AccessTokensStoreCreateFuncCall objects
// describing the invocations of this function.
func (f *AccessTokensStoreCreateFunc) History() []AccessTokensStoreCreateFuncCall {
	f.mutex.Lock()
	history := make([]AccessTokensStoreCreateFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// AccessTokensStoreCreateFuncCall is an object that describes an invocation
// of method Create on an instance of MockAccessTokensStore.
type AccessTokensStoreCreateFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.AccessToken
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c AccessTokensStoreCreateFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c AccessTokensStoreCreateFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// AccessTokensStoreDeleteByIDFunc describes the behavior when the
// DeleteByID method of the parent MockAccessTokensStore instance is
// invoked.
type AccessTokensStoreDeleteByIDFunc struct {
	defaultHook func(context.Context, int64, int64) error
	hooks       []func(context.Context, int64, int64) error
	history     []AccessTokensStoreDeleteByIDFuncCall
	mutex       sync.Mutex
}

// DeleteByID delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockAccessTokensStore) DeleteByID(v0 context.Context, v1 int64, v2 int64) error {
	r0 := m.DeleteByIDFunc.nextHook()(v0, v1, v2)
	m.DeleteByIDFunc.appendCall(AccessTokensStoreDeleteByIDFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the DeleteByID method of
// the parent MockAccessTokensStore instance is invoked and the hook queue
// is empty.
func (f *AccessTokensStoreDeleteByIDFunc) SetDefaultHook(hook func(context.Context, int64, int64) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// DeleteByID method of the parent MockAccessTokensStore instance invokes
// the hook at the front of the queue and discards it. After the queue is
// empty, the default hook function is invoked for any future action.
func (f *AccessTokensStoreDeleteByIDFunc) PushHook(hook func(context.Context, int64, int64) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *AccessTokensStoreDeleteByIDFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, int64) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *AccessTokensStoreDeleteByIDFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, int64) error {
		return r0
	})
}

func (f *AccessTokensStoreDeleteByIDFunc) nextHook() func(context.Context, int64, int64) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *AccessTokensStoreDeleteByIDFunc) appendCall(r0 AccessTokensStoreDeleteByIDFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of AccessTokensStoreDeleteByIDFuncCall objects
// describing the invocations of this function.
func (f *AccessTokensStoreDeleteByIDFunc) History() []AccessTokensStoreDeleteByIDFuncCall {
	f.mutex.Lock()
	history := make([]AccessTokensStoreDeleteByIDFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// AccessTokensStoreDeleteByIDFuncCall is an object that describes an
// invocation of method DeleteByID on an instance of MockAccessTokensStore.
type AccessTokensStoreDeleteByIDFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c AccessTokensStoreDeleteByIDFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c AccessTokensStoreDeleteByIDFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// AccessTokensStoreGetBySHA1Func describes the behavior when the GetBySHA1
// method of the parent MockAccessTokensStore instance is invoked.
type AccessTokensStoreGetBySHA1Func struct {
	defaultHook func(context.Context, string) (*db.AccessToken, error)
	hooks       []func(context.Context, string) (*db.AccessToken, error)
	history     []AccessTokensStoreGetBySHA1FuncCall
	mutex       sync.Mutex
}

// GetBySHA1 delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockAccessTokensStore) GetBySHA1(v0 context.Context, v1 string) (*db.AccessToken, error) {
	r0, r1 := m.GetBySHA1Func.nextHook()(v0, v1)
	m.GetBySHA1Func.appendCall(AccessTokensStoreGetBySHA1FuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetBySHA1 method of
// the parent MockAccessTokensStore instance is invoked and the hook queue
// is empty.
func (f *AccessTokensStoreGetBySHA1Func) SetDefaultHook(hook func(context.Context, string) (*db.AccessToken, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetBySHA1 method of the parent MockAccessTokensStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *AccessTokensStoreGetBySHA1Func) PushHook(hook func(context.Context, string) (*db.AccessToken, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *AccessTokensStoreGetBySHA1Func) SetDefaultReturn(r0 *db.AccessToken, r1 error) {
	f.SetDefaultHook(func(context.Context, string) (*db.AccessToken, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *AccessTokensStoreGetBySHA1Func) PushReturn(r0 *db.AccessToken, r1 error) {
	f.PushHook(func(context.Context, string) (*db.AccessToken, error) {
		return r0, r1
	})
}

func (f *AccessTokensStoreGetBySHA1Func) nextHook() func(context.Context, string) (*db.AccessToken, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *AccessTokensStoreGetBySHA1Func) appendCall(r0 AccessTokensStoreGetBySHA1FuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of AccessTokensStoreGetBySHA1FuncCall objects
// describing the invocations of this function.
func (f *AccessTokensStoreGetBySHA1Func) History() []AccessTokensStoreGetBySHA1FuncCall {
	f.mutex.Lock()
	history := make([]AccessTokensStoreGetBySHA1FuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// AccessTokensStoreGetBySHA1FuncCall is an object that describes an
// invocation of method GetBySHA1 on an instance of MockAccessTokensStore.
type AccessTokensStoreGetBySHA1FuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.AccessToken
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c AccessTokensStoreGetBySHA1FuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c AccessTokensStoreGetBySHA1FuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// AccessTokensStoreListFunc describes the behavior when the List method of
// the parent MockAccessTokensStore instance is invoked.
type AccessTokensStoreListFunc struct {
	defaultHook func(context.Context, int64) ([]*db.AccessToken, error)
	hooks       []func(context.Context, int64) ([]*db.AccessToken, error)
	history     []AccessTokensStoreListFuncCall
	mutex       sync.Mutex
}

// List delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockAccessTokensStore) List(v0 context.Context, v1 int64) ([]*db.AccessToken, error) {
	r0, r1 := m.ListFunc.nextHook()(v0, v1)
	m.ListFunc.appendCall(AccessTokensStoreListFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the List method of the
// parent MockAccessTokensStore instance is invoked and the hook queue is
// empty.
func (f *AccessTokensStoreListFunc) SetDefaultHook(hook func(context.Context, int64) ([]*db.AccessToken, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// List method of the parent MockAccessTokensStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *AccessTokensStoreListFunc) PushHook(hook func(context.Context, int64) ([]*db.AccessToken, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *AccessTokensStoreListFunc) SetDefaultReturn(r0 []*db.AccessToken, r1 error) {
	f.SetDefaultHook(func(context.Context, int64) ([]*db.AccessToken, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *AccessTokensStoreListFunc) PushReturn(r0 []*db.AccessToken, r1 error) {
	f.PushHook(func(context.Context, int64) ([]*db.AccessToken, error) {
		return r0, r1
	})
}

func (f *AccessTokensStoreListFunc) nextHook() func(context.Context, int64) ([]*db.AccessToken, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *AccessTokensStoreListFunc) appendCall(r0 AccessTokensStoreListFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of AccessTokensStoreListFuncCall objects
// describing the invocations of this function.
func (f *AccessTokensStoreListFunc) History() []AccessTokensStoreListFuncCall {
	f.mutex.Lock()
	history := make([]AccessTokensStoreListFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// AccessTokensStoreListFuncCall is an object that describes an invocation
// of method List on an instance of MockAccessTokensStore.
type AccessTokensStoreListFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.AccessToken
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c AccessTokensStoreListFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c AccessTokensStoreListFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// AccessTokensStoreTouchFunc describes the behavior when the Touch method
// of the parent MockAccessTokensStore instance is invoked.
type AccessTokensStoreTouchFunc struct {
	defaultHook func(context.Context, int64) error
	hooks       []func(context.Context, int64) error
	history     []AccessTokensStoreTouchFuncCall
	mutex       sync.Mutex
}

// Touch delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockAccessTokensStore) Touch(v0 context.Context, v1 int64) error {
	r0 := m.TouchFunc.nextHook()(v0, v1)
	m.TouchFunc.appendCall(AccessTokensStoreTouchFuncCall{v0, v1, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Touch method of the
// parent MockAccessTokensStore instance is invoked and the hook queue is
// empty.
func (f *AccessTokensStoreTouchFunc) SetDefaultHook(hook func(context.Context, int64) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Touch method of the parent MockAccessTokensStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *AccessTokensStoreTouchFunc) PushHook(hook func(context.Context, int64) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *AccessTokensStoreTouchFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *AccessTokensStoreTouchFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64) error {
		return r0
	})
}

func (f *AccessTokensStoreTouchFunc) nextHook() func(context.Context, int64) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *AccessTokensStoreTouchFunc) appendCall(r0 AccessTokensStoreTouchFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of AccessTokensStoreTouchFuncCall objects
// describing the invocations of this function.
func (f *AccessTokensStoreTouchFunc) History() []AccessTokensStoreTouchFuncCall {
	f.mutex.Lock()
	history := make([]AccessTokensStoreTouchFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// AccessTokensStoreTouchFuncCall is an object that describes an invocation
// of method Touch on an instance of MockAccessTokensStore.
type AccessTokensStoreTouchFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c AccessTokensStoreTouchFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c AccessTokensStoreTouchFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// MockLFSStore is a mock implementation of the LFSStore interface (from the
// package gogs.io/gogs/internal/db) used for unit testing.
type MockLFSStore struct {
	// CreateObjectFunc is an instance of a mock function object controlling
	// the behavior of the method CreateObject.
	CreateObjectFunc *LFSStoreCreateObjectFunc
	// GetObjectByOIDFunc is an instance of a mock function object
	// controlling the behavior of the method GetObjectByOID.
	GetObjectByOIDFunc *LFSStoreGetObjectByOIDFunc
	// GetObjectsByOIDsFunc is an instance of a mock function object
	// controlling the behavior of the method GetObjectsByOIDs.
	GetObjectsByOIDsFunc *LFSStoreGetObjectsByOIDsFunc
}

// NewMockLFSStore creates a new mock of the LFSStore interface. All methods
// return zero values for all results, unless overwritten.
func NewMockLFSStore() *MockLFSStore {
	return &MockLFSStore{
		CreateObjectFunc: &LFSStoreCreateObjectFunc{
			defaultHook: func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) (r0 error) {
				return
			},
		},
		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
			defaultHook: func(context.Context, int64, lfsutil.OID) (r0 *db.LFSObject, r1 error) {
				return
			},
		},
		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
			defaultHook: func(context.Context, int64, ...lfsutil.OID) (r0 []*db.LFSObject, r1 error) {
				return
			},
		},
	}
}

// NewStrictMockLFSStore creates a new mock of the LFSStore interface. All
// methods panic on invocation, unless overwritten.
func NewStrictMockLFSStore() *MockLFSStore {
	return &MockLFSStore{
		CreateObjectFunc: &LFSStoreCreateObjectFunc{
			defaultHook: func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
				panic("unexpected invocation of MockLFSStore.CreateObject")
			},
		},
		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
			defaultHook: func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error) {
				panic("unexpected invocation of MockLFSStore.GetObjectByOID")
			},
		},
		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
			defaultHook: func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error) {
				panic("unexpected invocation of MockLFSStore.GetObjectsByOIDs")
			},
		},
	}
}

// NewMockLFSStoreFrom creates a new mock of the MockLFSStore interface. All
// methods delegate to the given implementation, unless overwritten.
func NewMockLFSStoreFrom(i db.LFSStore) *MockLFSStore {
	return &MockLFSStore{
		CreateObjectFunc: &LFSStoreCreateObjectFunc{
			defaultHook: i.CreateObject,
		},
		GetObjectByOIDFunc: &LFSStoreGetObjectByOIDFunc{
			defaultHook: i.GetObjectByOID,
		},
		GetObjectsByOIDsFunc: &LFSStoreGetObjectsByOIDsFunc{
			defaultHook: i.GetObjectsByOIDs,
		},
	}
}

// LFSStoreCreateObjectFunc describes the behavior when the CreateObject
// method of the parent MockLFSStore instance is invoked.
type LFSStoreCreateObjectFunc struct {
	defaultHook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error
	hooks       []func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error
	history     []LFSStoreCreateObjectFuncCall
	mutex       sync.Mutex
}

// CreateObject delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockLFSStore) CreateObject(v0 context.Context, v1 int64, v2 lfsutil.OID, v3 int64, v4 lfsutil.Storage) error {
	r0 := m.CreateObjectFunc.nextHook()(v0, v1, v2, v3, v4)
	m.CreateObjectFunc.appendCall(LFSStoreCreateObjectFuncCall{v0, v1, v2, v3, v4, r0})
	return r0
}

// SetDefaultHook sets function that is called when the CreateObject method
// of the parent MockLFSStore instance is invoked and the hook queue is
// empty.
func (f *LFSStoreCreateObjectFunc) SetDefaultHook(hook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// CreateObject method of the parent MockLFSStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *LFSStoreCreateObjectFunc) PushHook(hook func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *LFSStoreCreateObjectFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *LFSStoreCreateObjectFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
		return r0
	})
}

func (f *LFSStoreCreateObjectFunc) nextHook() func(context.Context, int64, lfsutil.OID, int64, lfsutil.Storage) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *LFSStoreCreateObjectFunc) appendCall(r0 LFSStoreCreateObjectFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of LFSStoreCreateObjectFuncCall objects
// describing the invocations of this function.
func (f *LFSStoreCreateObjectFunc) History() []LFSStoreCreateObjectFuncCall {
	f.mutex.Lock()
	history := make([]LFSStoreCreateObjectFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// LFSStoreCreateObjectFuncCall is an object that describes an invocation of
// method CreateObject on an instance of MockLFSStore.
type LFSStoreCreateObjectFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 lfsutil.OID
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 int64
	// Arg4 is the value of the 5th argument passed to this method
	// invocation.
	Arg4 lfsutil.Storage
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c LFSStoreCreateObjectFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3, c.Arg4}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c LFSStoreCreateObjectFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// LFSStoreGetObjectByOIDFunc describes the behavior when the GetObjectByOID
// method of the parent MockLFSStore instance is invoked.
type LFSStoreGetObjectByOIDFunc struct {
	defaultHook func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error)
	hooks       []func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error)
	history     []LFSStoreGetObjectByOIDFuncCall
	mutex       sync.Mutex
}

// GetObjectByOID delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockLFSStore) GetObjectByOID(v0 context.Context, v1 int64, v2 lfsutil.OID) (*db.LFSObject, error) {
	r0, r1 := m.GetObjectByOIDFunc.nextHook()(v0, v1, v2)
	m.GetObjectByOIDFunc.appendCall(LFSStoreGetObjectByOIDFuncCall{v0, v1, v2, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetObjectByOID
// method of the parent MockLFSStore instance is invoked and the hook queue
// is empty.
func (f *LFSStoreGetObjectByOIDFunc) SetDefaultHook(hook func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetObjectByOID method of the parent MockLFSStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *LFSStoreGetObjectByOIDFunc) PushHook(hook func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *LFSStoreGetObjectByOIDFunc) SetDefaultReturn(r0 *db.LFSObject, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *LFSStoreGetObjectByOIDFunc) PushReturn(r0 *db.LFSObject, r1 error) {
	f.PushHook(func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error) {
		return r0, r1
	})
}

func (f *LFSStoreGetObjectByOIDFunc) nextHook() func(context.Context, int64, lfsutil.OID) (*db.LFSObject, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *LFSStoreGetObjectByOIDFunc) appendCall(r0 LFSStoreGetObjectByOIDFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of LFSStoreGetObjectByOIDFuncCall objects
// describing the invocations of this function.
func (f *LFSStoreGetObjectByOIDFunc) History() []LFSStoreGetObjectByOIDFuncCall {
	f.mutex.Lock()
	history := make([]LFSStoreGetObjectByOIDFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// LFSStoreGetObjectByOIDFuncCall is an object that describes an invocation
// of method GetObjectByOID on an instance of MockLFSStore.
type LFSStoreGetObjectByOIDFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 lfsutil.OID
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.LFSObject
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c LFSStoreGetObjectByOIDFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c LFSStoreGetObjectByOIDFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// LFSStoreGetObjectsByOIDsFunc describes the behavior when the
// GetObjectsByOIDs method of the parent MockLFSStore instance is invoked.
type LFSStoreGetObjectsByOIDsFunc struct {
	defaultHook func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error)
	hooks       []func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error)
	history     []LFSStoreGetObjectsByOIDsFuncCall
	mutex       sync.Mutex
}

// GetObjectsByOIDs delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockLFSStore) GetObjectsByOIDs(v0 context.Context, v1 int64, v2 ...lfsutil.OID) ([]*db.LFSObject, error) {
	r0, r1 := m.GetObjectsByOIDsFunc.nextHook()(v0, v1, v2...)
	m.GetObjectsByOIDsFunc.appendCall(LFSStoreGetObjectsByOIDsFuncCall{v0, v1, v2, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetObjectsByOIDs
// method of the parent MockLFSStore instance is invoked and the hook queue
// is empty.
func (f *LFSStoreGetObjectsByOIDsFunc) SetDefaultHook(hook func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetObjectsByOIDs method of the parent MockLFSStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *LFSStoreGetObjectsByOIDsFunc) PushHook(hook func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *LFSStoreGetObjectsByOIDsFunc) SetDefaultReturn(r0 []*db.LFSObject, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *LFSStoreGetObjectsByOIDsFunc) PushReturn(r0 []*db.LFSObject, r1 error) {
	f.PushHook(func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error) {
		return r0, r1
	})
}

func (f *LFSStoreGetObjectsByOIDsFunc) nextHook() func(context.Context, int64, ...lfsutil.OID) ([]*db.LFSObject, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *LFSStoreGetObjectsByOIDsFunc) appendCall(r0 LFSStoreGetObjectsByOIDsFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of LFSStoreGetObjectsByOIDsFuncCall objects
// describing the invocations of this function.
func (f *LFSStoreGetObjectsByOIDsFunc) History() []LFSStoreGetObjectsByOIDsFuncCall {
	f.mutex.Lock()
	history := make([]LFSStoreGetObjectsByOIDsFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// LFSStoreGetObjectsByOIDsFuncCall is an object that describes an
// invocation of method GetObjectsByOIDs on an instance of MockLFSStore.
type LFSStoreGetObjectsByOIDsFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is a slice containing the values of the variadic arguments
	// passed to this method invocation.
	Arg2 []lfsutil.OID
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.LFSObject
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation. The variadic slice argument is flattened in this array such
// that one positional argument and three variadic arguments would result in
// a slice of four, not two.
func (c LFSStoreGetObjectsByOIDsFuncCall) Args() []interface{} {
	trailing := []interface{}{}
	for _, val := range c.Arg2 {
		trailing = append(trailing, val)
	}

	return append([]interface{}{c.Arg0, c.Arg1}, trailing...)
}

// Results returns an interface slice containing the results of this
// invocation.
func (c LFSStoreGetObjectsByOIDsFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// MockPermsStore is a mock implementation of the PermsStore interface (from
// the package gogs.io/gogs/internal/db) used for unit testing.
type MockPermsStore struct {
	// AccessModeFunc is an instance of a mock function object controlling
	// the behavior of the method AccessMode.
	AccessModeFunc *PermsStoreAccessModeFunc
	// AuthorizeFunc is an instance of a mock function object controlling
	// the behavior of the method Authorize.
	AuthorizeFunc *PermsStoreAuthorizeFunc
	// SetRepoPermsFunc is an instance of a mock function object controlling
	// the behavior of the method SetRepoPerms.
	SetRepoPermsFunc *PermsStoreSetRepoPermsFunc
}

// NewMockPermsStore creates a new mock of the PermsStore interface. All
// methods return zero values for all results, unless overwritten.
func NewMockPermsStore() *MockPermsStore {
	return &MockPermsStore{
		AccessModeFunc: &PermsStoreAccessModeFunc{
			defaultHook: func(context.Context, int64, int64, db.AccessModeOptions) (r0 db.AccessMode) {
				return
			},
		},
		AuthorizeFunc: &PermsStoreAuthorizeFunc{
			defaultHook: func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) (r0 bool) {
				return
			},
		},
		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
			defaultHook: func(context.Context, int64, map[int64]db.AccessMode) (r0 error) {
				return
			},
		},
	}
}

// NewStrictMockPermsStore creates a new mock of the PermsStore interface.
// All methods panic on invocation, unless overwritten.
func NewStrictMockPermsStore() *MockPermsStore {
	return &MockPermsStore{
		AccessModeFunc: &PermsStoreAccessModeFunc{
			defaultHook: func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode {
				panic("unexpected invocation of MockPermsStore.AccessMode")
			},
		},
		AuthorizeFunc: &PermsStoreAuthorizeFunc{
			defaultHook: func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool {
				panic("unexpected invocation of MockPermsStore.Authorize")
			},
		},
		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
			defaultHook: func(context.Context, int64, map[int64]db.AccessMode) error {
				panic("unexpected invocation of MockPermsStore.SetRepoPerms")
			},
		},
	}
}

// NewMockPermsStoreFrom creates a new mock of the MockPermsStore interface.
// All methods delegate to the given implementation, unless overwritten.
func NewMockPermsStoreFrom(i db.PermsStore) *MockPermsStore {
	return &MockPermsStore{
		AccessModeFunc: &PermsStoreAccessModeFunc{
			defaultHook: i.AccessMode,
		},
		AuthorizeFunc: &PermsStoreAuthorizeFunc{
			defaultHook: i.Authorize,
		},
		SetRepoPermsFunc: &PermsStoreSetRepoPermsFunc{
			defaultHook: i.SetRepoPerms,
		},
	}
}

// PermsStoreAccessModeFunc describes the behavior when the AccessMode
// method of the parent MockPermsStore instance is invoked.
type PermsStoreAccessModeFunc struct {
	defaultHook func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode
	hooks       []func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode
	history     []PermsStoreAccessModeFuncCall
	mutex       sync.Mutex
}

// AccessMode delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockPermsStore) AccessMode(v0 context.Context, v1 int64, v2 int64, v3 db.AccessModeOptions) db.AccessMode {
	r0 := m.AccessModeFunc.nextHook()(v0, v1, v2, v3)
	m.AccessModeFunc.appendCall(PermsStoreAccessModeFuncCall{v0, v1, v2, v3, r0})
	return r0
}

// SetDefaultHook sets function that is called when the AccessMode method of
// the parent MockPermsStore instance is invoked and the hook queue is
// empty.
func (f *PermsStoreAccessModeFunc) SetDefaultHook(hook func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// AccessMode method of the parent MockPermsStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *PermsStoreAccessModeFunc) PushHook(hook func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *PermsStoreAccessModeFunc) SetDefaultReturn(r0 db.AccessMode) {
	f.SetDefaultHook(func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *PermsStoreAccessModeFunc) PushReturn(r0 db.AccessMode) {
	f.PushHook(func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode {
		return r0
	})
}

func (f *PermsStoreAccessModeFunc) nextHook() func(context.Context, int64, int64, db.AccessModeOptions) db.AccessMode {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *PermsStoreAccessModeFunc) appendCall(r0 PermsStoreAccessModeFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of PermsStoreAccessModeFuncCall objects
// describing the invocations of this function.
func (f *PermsStoreAccessModeFunc) History() []PermsStoreAccessModeFuncCall {
	f.mutex.Lock()
	history := make([]PermsStoreAccessModeFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// PermsStoreAccessModeFuncCall is an object that describes an invocation of
// method AccessMode on an instance of MockPermsStore.
type PermsStoreAccessModeFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 db.AccessModeOptions
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 db.AccessMode
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c PermsStoreAccessModeFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c PermsStoreAccessModeFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// PermsStoreAuthorizeFunc describes the behavior when the Authorize method
// of the parent MockPermsStore instance is invoked.
type PermsStoreAuthorizeFunc struct {
	defaultHook func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool
	hooks       []func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool
	history     []PermsStoreAuthorizeFuncCall
	mutex       sync.Mutex
}

// Authorize delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockPermsStore) Authorize(v0 context.Context, v1 int64, v2 int64, v3 db.AccessMode, v4 db.AccessModeOptions) bool {
	r0 := m.AuthorizeFunc.nextHook()(v0, v1, v2, v3, v4)
	m.AuthorizeFunc.appendCall(PermsStoreAuthorizeFuncCall{v0, v1, v2, v3, v4, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Authorize method of
// the parent MockPermsStore instance is invoked and the hook queue is
// empty.
func (f *PermsStoreAuthorizeFunc) SetDefaultHook(hook func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Authorize method of the parent MockPermsStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *PermsStoreAuthorizeFunc) PushHook(hook func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *PermsStoreAuthorizeFunc) SetDefaultReturn(r0 bool) {
	f.SetDefaultHook(func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *PermsStoreAuthorizeFunc) PushReturn(r0 bool) {
	f.PushHook(func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool {
		return r0
	})
}

func (f *PermsStoreAuthorizeFunc) nextHook() func(context.Context, int64, int64, db.AccessMode, db.AccessModeOptions) bool {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *PermsStoreAuthorizeFunc) appendCall(r0 PermsStoreAuthorizeFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of PermsStoreAuthorizeFuncCall objects
// describing the invocations of this function.
func (f *PermsStoreAuthorizeFunc) History() []PermsStoreAuthorizeFuncCall {
	f.mutex.Lock()
	history := make([]PermsStoreAuthorizeFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// PermsStoreAuthorizeFuncCall is an object that describes an invocation of
// method Authorize on an instance of MockPermsStore.
type PermsStoreAuthorizeFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 db.AccessMode
	// Arg4 is the value of the 5th argument passed to this method
	// invocation.
	Arg4 db.AccessModeOptions
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 bool
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c PermsStoreAuthorizeFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3, c.Arg4}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c PermsStoreAuthorizeFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// PermsStoreSetRepoPermsFunc describes the behavior when the SetRepoPerms
// method of the parent MockPermsStore instance is invoked.
type PermsStoreSetRepoPermsFunc struct {
	defaultHook func(context.Context, int64, map[int64]db.AccessMode) error
	hooks       []func(context.Context, int64, map[int64]db.AccessMode) error
	history     []PermsStoreSetRepoPermsFuncCall
	mutex       sync.Mutex
}

// SetRepoPerms delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockPermsStore) SetRepoPerms(v0 context.Context, v1 int64, v2 map[int64]db.AccessMode) error {
	r0 := m.SetRepoPermsFunc.nextHook()(v0, v1, v2)
	m.SetRepoPermsFunc.appendCall(PermsStoreSetRepoPermsFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the SetRepoPerms method
// of the parent MockPermsStore instance is invoked and the hook queue is
// empty.
func (f *PermsStoreSetRepoPermsFunc) SetDefaultHook(hook func(context.Context, int64, map[int64]db.AccessMode) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// SetRepoPerms method of the parent MockPermsStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *PermsStoreSetRepoPermsFunc) PushHook(hook func(context.Context, int64, map[int64]db.AccessMode) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *PermsStoreSetRepoPermsFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, map[int64]db.AccessMode) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *PermsStoreSetRepoPermsFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, map[int64]db.AccessMode) error {
		return r0
	})
}

func (f *PermsStoreSetRepoPermsFunc) nextHook() func(context.Context, int64, map[int64]db.AccessMode) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *PermsStoreSetRepoPermsFunc) appendCall(r0 PermsStoreSetRepoPermsFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of PermsStoreSetRepoPermsFuncCall objects
// describing the invocations of this function.
func (f *PermsStoreSetRepoPermsFunc) History() []PermsStoreSetRepoPermsFuncCall {
	f.mutex.Lock()
	history := make([]PermsStoreSetRepoPermsFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// PermsStoreSetRepoPermsFuncCall is an object that describes an invocation
// of method SetRepoPerms on an instance of MockPermsStore.
type PermsStoreSetRepoPermsFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 map[int64]db.AccessMode
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c PermsStoreSetRepoPermsFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c PermsStoreSetRepoPermsFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// MockReposStore is a mock implementation of the ReposStore interface (from
// the package gogs.io/gogs/internal/db) used for unit testing.
type MockReposStore struct {
	// CreateFunc is an instance of a mock function object controlling the
	// behavior of the method Create.
	CreateFunc *ReposStoreCreateFunc
	// GetByCollaboratorIDFunc is an instance of a mock function object
	// controlling the behavior of the method GetByCollaboratorID.
	GetByCollaboratorIDFunc *ReposStoreGetByCollaboratorIDFunc
	// GetByCollaboratorIDWithAccessModeFunc is an instance of a mock
	// function object controlling the behavior of the method
	// GetByCollaboratorIDWithAccessMode.
	GetByCollaboratorIDWithAccessModeFunc *ReposStoreGetByCollaboratorIDWithAccessModeFunc
	// GetByIDFunc is an instance of a mock function object controlling the
	// behavior of the method GetByID.
	GetByIDFunc *ReposStoreGetByIDFunc
	// GetByNameFunc is an instance of a mock function object controlling
	// the behavior of the method GetByName.
	GetByNameFunc *ReposStoreGetByNameFunc
	// HasForkedByFunc is an instance of a mock function object controlling
	// the behavior of the method HasForkedBy.
	HasForkedByFunc *ReposStoreHasForkedByFunc
	// ListWatchesFunc is an instance of a mock function object controlling
	// the behavior of the method ListWatches.
	ListWatchesFunc *ReposStoreListWatchesFunc
	// StarFunc is an instance of a mock function object controlling the
	// behavior of the method Star.
	StarFunc *ReposStoreStarFunc
	// TouchFunc is an instance of a mock function object controlling the
	// behavior of the method Touch.
	TouchFunc *ReposStoreTouchFunc
	// WatchFunc is an instance of a mock function object controlling the
	// behavior of the method Watch.
	WatchFunc *ReposStoreWatchFunc
}

// NewMockReposStore creates a new mock of the ReposStore interface. All
// methods return zero values for all results, unless overwritten.
func NewMockReposStore() *MockReposStore {
	return &MockReposStore{
		CreateFunc: &ReposStoreCreateFunc{
			defaultHook: func(context.Context, int64, db.CreateRepoOptions) (r0 *db.Repository, r1 error) {
				return
			},
		},
		GetByCollaboratorIDFunc: &ReposStoreGetByCollaboratorIDFunc{
			defaultHook: func(context.Context, int64, int, string) (r0 []*db.Repository, r1 error) {
				return
			},
		},
		GetByCollaboratorIDWithAccessModeFunc: &ReposStoreGetByCollaboratorIDWithAccessModeFunc{
			defaultHook: func(context.Context, int64) (r0 map[*db.Repository]db.AccessMode, r1 error) {
				return
			},
		},
		GetByIDFunc: &ReposStoreGetByIDFunc{
			defaultHook: func(context.Context, int64) (r0 *db.Repository, r1 error) {
				return
			},
		},
		GetByNameFunc: &ReposStoreGetByNameFunc{
			defaultHook: func(context.Context, int64, string) (r0 *db.Repository, r1 error) {
				return
			},
		},
		HasForkedByFunc: &ReposStoreHasForkedByFunc{
			defaultHook: func(context.Context, int64, int64) (r0 bool) {
				return
			},
		},
		ListWatchesFunc: &ReposStoreListWatchesFunc{
			defaultHook: func(context.Context, int64) (r0 []*db.Watch, r1 error) {
				return
			},
		},
		StarFunc: &ReposStoreStarFunc{
			defaultHook: func(context.Context, int64, int64) (r0 error) {
				return
			},
		},
		TouchFunc: &ReposStoreTouchFunc{
			defaultHook: func(context.Context, int64) (r0 error) {
				return
			},
		},
		WatchFunc: &ReposStoreWatchFunc{
			defaultHook: func(context.Context, int64, int64) (r0 error) {
				return
			},
		},
	}
}

// NewStrictMockReposStore creates a new mock of the ReposStore interface.
// All methods panic on invocation, unless overwritten.
func NewStrictMockReposStore() *MockReposStore {
	return &MockReposStore{
		CreateFunc: &ReposStoreCreateFunc{
			defaultHook: func(context.Context, int64, db.CreateRepoOptions) (*db.Repository, error) {
				panic("unexpected invocation of MockReposStore.Create")
			},
		},
		GetByCollaboratorIDFunc: &ReposStoreGetByCollaboratorIDFunc{
			defaultHook: func(context.Context, int64, int, string) ([]*db.Repository, error) {
				panic("unexpected invocation of MockReposStore.GetByCollaboratorID")
			},
		},
		GetByCollaboratorIDWithAccessModeFunc: &ReposStoreGetByCollaboratorIDWithAccessModeFunc{
			defaultHook: func(context.Context, int64) (map[*db.Repository]db.AccessMode, error) {
				panic("unexpected invocation of MockReposStore.GetByCollaboratorIDWithAccessMode")
			},
		},
		GetByIDFunc: &ReposStoreGetByIDFunc{
			defaultHook: func(context.Context, int64) (*db.Repository, error) {
				panic("unexpected invocation of MockReposStore.GetByID")
			},
		},
		GetByNameFunc: &ReposStoreGetByNameFunc{
			defaultHook: func(context.Context, int64, string) (*db.Repository, error) {
				panic("unexpected invocation of MockReposStore.GetByName")
			},
		},
		HasForkedByFunc: &ReposStoreHasForkedByFunc{
			defaultHook: func(context.Context, int64, int64) bool {
				panic("unexpected invocation of MockReposStore.HasForkedBy")
			},
		},
		ListWatchesFunc: &ReposStoreListWatchesFunc{
			defaultHook: func(context.Context, int64) ([]*db.Watch, error) {
				panic("unexpected invocation of MockReposStore.ListWatches")
			},
		},
		StarFunc: &ReposStoreStarFunc{
			defaultHook: func(context.Context, int64, int64) error {
				panic("unexpected invocation of MockReposStore.Star")
			},
		},
		TouchFunc: &ReposStoreTouchFunc{
			defaultHook: func(context.Context, int64) error {
				panic("unexpected invocation of MockReposStore.Touch")
			},
		},
		WatchFunc: &ReposStoreWatchFunc{
			defaultHook: func(context.Context, int64, int64) error {
				panic("unexpected invocation of MockReposStore.Watch")
			},
		},
	}
}

// NewMockReposStoreFrom creates a new mock of the MockReposStore interface.
// All methods delegate to the given implementation, unless overwritten.
func NewMockReposStoreFrom(i db.ReposStore) *MockReposStore {
	return &MockReposStore{
		CreateFunc: &ReposStoreCreateFunc{
			defaultHook: i.Create,
		},
		GetByCollaboratorIDFunc: &ReposStoreGetByCollaboratorIDFunc{
			defaultHook: i.GetByCollaboratorID,
		},
		GetByCollaboratorIDWithAccessModeFunc: &ReposStoreGetByCollaboratorIDWithAccessModeFunc{
			defaultHook: i.GetByCollaboratorIDWithAccessMode,
		},
		GetByIDFunc: &ReposStoreGetByIDFunc{
			defaultHook: i.GetByID,
		},
		GetByNameFunc: &ReposStoreGetByNameFunc{
			defaultHook: i.GetByName,
		},
		HasForkedByFunc: &ReposStoreHasForkedByFunc{
			defaultHook: i.HasForkedBy,
		},
		ListWatchesFunc: &ReposStoreListWatchesFunc{
			defaultHook: i.ListWatches,
		},
		StarFunc: &ReposStoreStarFunc{
			defaultHook: i.Star,
		},
		TouchFunc: &ReposStoreTouchFunc{
			defaultHook: i.Touch,
		},
		WatchFunc: &ReposStoreWatchFunc{
			defaultHook: i.Watch,
		},
	}
}

// ReposStoreCreateFunc describes the behavior when the Create method of the
// parent MockReposStore instance is invoked.
type ReposStoreCreateFunc struct {
	defaultHook func(context.Context, int64, db.CreateRepoOptions) (*db.Repository, error)
	hooks       []func(context.Context, int64, db.CreateRepoOptions) (*db.Repository, error)
	history     []ReposStoreCreateFuncCall
	mutex       sync.Mutex
}

// Create delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockReposStore) Create(v0 context.Context, v1 int64, v2 db.CreateRepoOptions) (*db.Repository, error) {
	r0, r1 := m.CreateFunc.nextHook()(v0, v1, v2)
	m.CreateFunc.appendCall(ReposStoreCreateFuncCall{v0, v1, v2, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the Create method of the
// parent MockReposStore instance is invoked and the hook queue is empty.
func (f *ReposStoreCreateFunc) SetDefaultHook(hook func(context.Context, int64, db.CreateRepoOptions) (*db.Repository, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Create method of the parent MockReposStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *ReposStoreCreateFunc) PushHook(hook func(context.Context, int64, db.CreateRepoOptions) (*db.Repository, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreCreateFunc) SetDefaultReturn(r0 *db.Repository, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, db.CreateRepoOptions) (*db.Repository, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreCreateFunc) PushReturn(r0 *db.Repository, r1 error) {
	f.PushHook(func(context.Context, int64, db.CreateRepoOptions) (*db.Repository, error) {
		return r0, r1
	})
}

func (f *ReposStoreCreateFunc) nextHook() func(context.Context, int64, db.CreateRepoOptions) (*db.Repository, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreCreateFunc) appendCall(r0 ReposStoreCreateFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreCreateFuncCall objects describing
// the invocations of this function.
func (f *ReposStoreCreateFunc) History() []ReposStoreCreateFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreCreateFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreCreateFuncCall is an object that describes an invocation of
// method Create on an instance of MockReposStore.
type ReposStoreCreateFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 db.CreateRepoOptions
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.Repository
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreCreateFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreCreateFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// ReposStoreGetByCollaboratorIDFunc describes the behavior when the
// GetByCollaboratorID method of the parent MockReposStore instance is
// invoked.
type ReposStoreGetByCollaboratorIDFunc struct {
	defaultHook func(context.Context, int64, int, string) ([]*db.Repository, error)
	hooks       []func(context.Context, int64, int, string) ([]*db.Repository, error)
	history     []ReposStoreGetByCollaboratorIDFuncCall
	mutex       sync.Mutex
}

// GetByCollaboratorID delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockReposStore) GetByCollaboratorID(v0 context.Context, v1 int64, v2 int, v3 string) ([]*db.Repository, error) {
	r0, r1 := m.GetByCollaboratorIDFunc.nextHook()(v0, v1, v2, v3)
	m.GetByCollaboratorIDFunc.appendCall(ReposStoreGetByCollaboratorIDFuncCall{v0, v1, v2, v3, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetByCollaboratorID
// method of the parent MockReposStore instance is invoked and the hook
// queue is empty.
func (f *ReposStoreGetByCollaboratorIDFunc) SetDefaultHook(hook func(context.Context, int64, int, string) ([]*db.Repository, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByCollaboratorID method of the parent MockReposStore instance invokes
// the hook at the front of the queue and discards it. After the queue is
// empty, the default hook function is invoked for any future action.
func (f *ReposStoreGetByCollaboratorIDFunc) PushHook(hook func(context.Context, int64, int, string) ([]*db.Repository, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreGetByCollaboratorIDFunc) SetDefaultReturn(r0 []*db.Repository, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, int, string) ([]*db.Repository, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreGetByCollaboratorIDFunc) PushReturn(r0 []*db.Repository, r1 error) {
	f.PushHook(func(context.Context, int64, int, string) ([]*db.Repository, error) {
		return r0, r1
	})
}

func (f *ReposStoreGetByCollaboratorIDFunc) nextHook() func(context.Context, int64, int, string) ([]*db.Repository, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreGetByCollaboratorIDFunc) appendCall(r0 ReposStoreGetByCollaboratorIDFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreGetByCollaboratorIDFuncCall
// objects describing the invocations of this function.
func (f *ReposStoreGetByCollaboratorIDFunc) History() []ReposStoreGetByCollaboratorIDFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreGetByCollaboratorIDFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreGetByCollaboratorIDFuncCall is an object that describes an
// invocation of method GetByCollaboratorID on an instance of
// MockReposStore.
type ReposStoreGetByCollaboratorIDFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.Repository
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreGetByCollaboratorIDFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreGetByCollaboratorIDFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// ReposStoreGetByCollaboratorIDWithAccessModeFunc describes the behavior
// when the GetByCollaboratorIDWithAccessMode method of the parent
// MockReposStore instance is invoked.
type ReposStoreGetByCollaboratorIDWithAccessModeFunc struct {
	defaultHook func(context.Context, int64) (map[*db.Repository]db.AccessMode, error)
	hooks       []func(context.Context, int64) (map[*db.Repository]db.AccessMode, error)
	history     []ReposStoreGetByCollaboratorIDWithAccessModeFuncCall
	mutex       sync.Mutex
}

// GetByCollaboratorIDWithAccessMode delegates to the next hook function in
// the queue and stores the parameter and result values of this invocation.
func (m *MockReposStore) GetByCollaboratorIDWithAccessMode(v0 context.Context, v1 int64) (map[*db.Repository]db.AccessMode, error) {
	r0, r1 := m.GetByCollaboratorIDWithAccessModeFunc.nextHook()(v0, v1)
	m.GetByCollaboratorIDWithAccessModeFunc.appendCall(ReposStoreGetByCollaboratorIDWithAccessModeFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the
// GetByCollaboratorIDWithAccessMode method of the parent MockReposStore
// instance is invoked and the hook queue is empty.
func (f *ReposStoreGetByCollaboratorIDWithAccessModeFunc) SetDefaultHook(hook func(context.Context, int64) (map[*db.Repository]db.AccessMode, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByCollaboratorIDWithAccessMode method of the parent MockReposStore
// instance invokes the hook at the front of the queue and discards it.
// After the queue is empty, the default hook function is invoked for any
// future action.
func (f *ReposStoreGetByCollaboratorIDWithAccessModeFunc) PushHook(hook func(context.Context, int64) (map[*db.Repository]db.AccessMode, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreGetByCollaboratorIDWithAccessModeFunc) SetDefaultReturn(r0 map[*db.Repository]db.AccessMode, r1 error) {
	f.SetDefaultHook(func(context.Context, int64) (map[*db.Repository]db.AccessMode, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreGetByCollaboratorIDWithAccessModeFunc) PushReturn(r0 map[*db.Repository]db.AccessMode, r1 error) {
	f.PushHook(func(context.Context, int64) (map[*db.Repository]db.AccessMode, error) {
		return r0, r1
	})
}

func (f *ReposStoreGetByCollaboratorIDWithAccessModeFunc) nextHook() func(context.Context, int64) (map[*db.Repository]db.AccessMode, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreGetByCollaboratorIDWithAccessModeFunc) appendCall(r0 ReposStoreGetByCollaboratorIDWithAccessModeFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of
// ReposStoreGetByCollaboratorIDWithAccessModeFuncCall objects describing
// the invocations of this function.
func (f *ReposStoreGetByCollaboratorIDWithAccessModeFunc) History() []ReposStoreGetByCollaboratorIDWithAccessModeFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreGetByCollaboratorIDWithAccessModeFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreGetByCollaboratorIDWithAccessModeFuncCall is an object that
// describes an invocation of method GetByCollaboratorIDWithAccessMode on an
// instance of MockReposStore.
type ReposStoreGetByCollaboratorIDWithAccessModeFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 map[*db.Repository]db.AccessMode
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreGetByCollaboratorIDWithAccessModeFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreGetByCollaboratorIDWithAccessModeFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// ReposStoreGetByIDFunc describes the behavior when the GetByID method of
// the parent MockReposStore instance is invoked.
type ReposStoreGetByIDFunc struct {
	defaultHook func(context.Context, int64) (*db.Repository, error)
	hooks       []func(context.Context, int64) (*db.Repository, error)
	history     []ReposStoreGetByIDFuncCall
	mutex       sync.Mutex
}

// GetByID delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockReposStore) GetByID(v0 context.Context, v1 int64) (*db.Repository, error) {
	r0, r1 := m.GetByIDFunc.nextHook()(v0, v1)
	m.GetByIDFunc.appendCall(ReposStoreGetByIDFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetByID method of
// the parent MockReposStore instance is invoked and the hook queue is
// empty.
func (f *ReposStoreGetByIDFunc) SetDefaultHook(hook func(context.Context, int64) (*db.Repository, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByID method of the parent MockReposStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *ReposStoreGetByIDFunc) PushHook(hook func(context.Context, int64) (*db.Repository, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreGetByIDFunc) SetDefaultReturn(r0 *db.Repository, r1 error) {
	f.SetDefaultHook(func(context.Context, int64) (*db.Repository, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreGetByIDFunc) PushReturn(r0 *db.Repository, r1 error) {
	f.PushHook(func(context.Context, int64) (*db.Repository, error) {
		return r0, r1
	})
}

func (f *ReposStoreGetByIDFunc) nextHook() func(context.Context, int64) (*db.Repository, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreGetByIDFunc) appendCall(r0 ReposStoreGetByIDFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreGetByIDFuncCall objects
// describing the invocations of this function.
func (f *ReposStoreGetByIDFunc) History() []ReposStoreGetByIDFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreGetByIDFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreGetByIDFuncCall is an object that describes an invocation of
// method GetByID on an instance of MockReposStore.
type ReposStoreGetByIDFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.Repository
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreGetByIDFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreGetByIDFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// ReposStoreGetByNameFunc describes the behavior when the GetByName method
// of the parent MockReposStore instance is invoked.
type ReposStoreGetByNameFunc struct {
	defaultHook func(context.Context, int64, string) (*db.Repository, error)
	hooks       []func(context.Context, int64, string) (*db.Repository, error)
	history     []ReposStoreGetByNameFuncCall
	mutex       sync.Mutex
}

// GetByName delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockReposStore) GetByName(v0 context.Context, v1 int64, v2 string) (*db.Repository, error) {
	r0, r1 := m.GetByNameFunc.nextHook()(v0, v1, v2)
	m.GetByNameFunc.appendCall(ReposStoreGetByNameFuncCall{v0, v1, v2, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetByName method of
// the parent MockReposStore instance is invoked and the hook queue is
// empty.
func (f *ReposStoreGetByNameFunc) SetDefaultHook(hook func(context.Context, int64, string) (*db.Repository, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByName method of the parent MockReposStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *ReposStoreGetByNameFunc) PushHook(hook func(context.Context, int64, string) (*db.Repository, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreGetByNameFunc) SetDefaultReturn(r0 *db.Repository, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, string) (*db.Repository, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreGetByNameFunc) PushReturn(r0 *db.Repository, r1 error) {
	f.PushHook(func(context.Context, int64, string) (*db.Repository, error) {
		return r0, r1
	})
}

func (f *ReposStoreGetByNameFunc) nextHook() func(context.Context, int64, string) (*db.Repository, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreGetByNameFunc) appendCall(r0 ReposStoreGetByNameFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreGetByNameFuncCall objects
// describing the invocations of this function.
func (f *ReposStoreGetByNameFunc) History() []ReposStoreGetByNameFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreGetByNameFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreGetByNameFuncCall is an object that describes an invocation of
// method GetByName on an instance of MockReposStore.
type ReposStoreGetByNameFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.Repository
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreGetByNameFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreGetByNameFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// ReposStoreHasForkedByFunc describes the behavior when the HasForkedBy
// method of the parent MockReposStore instance is invoked.
type ReposStoreHasForkedByFunc struct {
	defaultHook func(context.Context, int64, int64) bool
	hooks       []func(context.Context, int64, int64) bool
	history     []ReposStoreHasForkedByFuncCall
	mutex       sync.Mutex
}

// HasForkedBy delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockReposStore) HasForkedBy(v0 context.Context, v1 int64, v2 int64) bool {
	r0 := m.HasForkedByFunc.nextHook()(v0, v1, v2)
	m.HasForkedByFunc.appendCall(ReposStoreHasForkedByFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the HasForkedBy method
// of the parent MockReposStore instance is invoked and the hook queue is
// empty.
func (f *ReposStoreHasForkedByFunc) SetDefaultHook(hook func(context.Context, int64, int64) bool) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// HasForkedBy method of the parent MockReposStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *ReposStoreHasForkedByFunc) PushHook(hook func(context.Context, int64, int64) bool) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreHasForkedByFunc) SetDefaultReturn(r0 bool) {
	f.SetDefaultHook(func(context.Context, int64, int64) bool {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreHasForkedByFunc) PushReturn(r0 bool) {
	f.PushHook(func(context.Context, int64, int64) bool {
		return r0
	})
}

func (f *ReposStoreHasForkedByFunc) nextHook() func(context.Context, int64, int64) bool {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreHasForkedByFunc) appendCall(r0 ReposStoreHasForkedByFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreHasForkedByFuncCall objects
// describing the invocations of this function.
func (f *ReposStoreHasForkedByFunc) History() []ReposStoreHasForkedByFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreHasForkedByFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreHasForkedByFuncCall is an object that describes an invocation
// of method HasForkedBy on an instance of MockReposStore.
type ReposStoreHasForkedByFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 bool
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreHasForkedByFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreHasForkedByFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// ReposStoreListWatchesFunc describes the behavior when the ListWatches
// method of the parent MockReposStore instance is invoked.
type ReposStoreListWatchesFunc struct {
	defaultHook func(context.Context, int64) ([]*db.Watch, error)
	hooks       []func(context.Context, int64) ([]*db.Watch, error)
	history     []ReposStoreListWatchesFuncCall
	mutex       sync.Mutex
}

// ListWatches delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockReposStore) ListWatches(v0 context.Context, v1 int64) ([]*db.Watch, error) {
	r0, r1 := m.ListWatchesFunc.nextHook()(v0, v1)
	m.ListWatchesFunc.appendCall(ReposStoreListWatchesFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the ListWatches method
// of the parent MockReposStore instance is invoked and the hook queue is
// empty.
func (f *ReposStoreListWatchesFunc) SetDefaultHook(hook func(context.Context, int64) ([]*db.Watch, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// ListWatches method of the parent MockReposStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *ReposStoreListWatchesFunc) PushHook(hook func(context.Context, int64) ([]*db.Watch, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreListWatchesFunc) SetDefaultReturn(r0 []*db.Watch, r1 error) {
	f.SetDefaultHook(func(context.Context, int64) ([]*db.Watch, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreListWatchesFunc) PushReturn(r0 []*db.Watch, r1 error) {
	f.PushHook(func(context.Context, int64) ([]*db.Watch, error) {
		return r0, r1
	})
}

func (f *ReposStoreListWatchesFunc) nextHook() func(context.Context, int64) ([]*db.Watch, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreListWatchesFunc) appendCall(r0 ReposStoreListWatchesFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreListWatchesFuncCall objects
// describing the invocations of this function.
func (f *ReposStoreListWatchesFunc) History() []ReposStoreListWatchesFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreListWatchesFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreListWatchesFuncCall is an object that describes an invocation
// of method ListWatches on an instance of MockReposStore.
type ReposStoreListWatchesFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.Watch
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreListWatchesFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreListWatchesFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// ReposStoreStarFunc describes the behavior when the Star method of the
// parent MockReposStore instance is invoked.
type ReposStoreStarFunc struct {
	defaultHook func(context.Context, int64, int64) error
	hooks       []func(context.Context, int64, int64) error
	history     []ReposStoreStarFuncCall
	mutex       sync.Mutex
}

// Star delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockReposStore) Star(v0 context.Context, v1 int64, v2 int64) error {
	r0 := m.StarFunc.nextHook()(v0, v1, v2)
	m.StarFunc.appendCall(ReposStoreStarFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Star method of the
// parent MockReposStore instance is invoked and the hook queue is empty.
func (f *ReposStoreStarFunc) SetDefaultHook(hook func(context.Context, int64, int64) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Star method of the parent MockReposStore instance invokes the hook at the
// front of the queue and discards it. After the queue is empty, the default
// hook function is invoked for any future action.
func (f *ReposStoreStarFunc) PushHook(hook func(context.Context, int64, int64) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreStarFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, int64) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreStarFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, int64) error {
		return r0
	})
}

func (f *ReposStoreStarFunc) nextHook() func(context.Context, int64, int64) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreStarFunc) appendCall(r0 ReposStoreStarFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreStarFuncCall objects describing
// the invocations of this function.
func (f *ReposStoreStarFunc) History() []ReposStoreStarFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreStarFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreStarFuncCall is an object that describes an invocation of
// method Star on an instance of MockReposStore.
type ReposStoreStarFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreStarFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreStarFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// ReposStoreTouchFunc describes the behavior when the Touch method of the
// parent MockReposStore instance is invoked.
type ReposStoreTouchFunc struct {
	defaultHook func(context.Context, int64) error
	hooks       []func(context.Context, int64) error
	history     []ReposStoreTouchFuncCall
	mutex       sync.Mutex
}

// Touch delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockReposStore) Touch(v0 context.Context, v1 int64) error {
	r0 := m.TouchFunc.nextHook()(v0, v1)
	m.TouchFunc.appendCall(ReposStoreTouchFuncCall{v0, v1, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Touch method of the
// parent MockReposStore instance is invoked and the hook queue is empty.
func (f *ReposStoreTouchFunc) SetDefaultHook(hook func(context.Context, int64) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Touch method of the parent MockReposStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *ReposStoreTouchFunc) PushHook(hook func(context.Context, int64) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreTouchFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreTouchFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64) error {
		return r0
	})
}

func (f *ReposStoreTouchFunc) nextHook() func(context.Context, int64) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreTouchFunc) appendCall(r0 ReposStoreTouchFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreTouchFuncCall objects describing
// the invocations of this function.
func (f *ReposStoreTouchFunc) History() []ReposStoreTouchFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreTouchFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreTouchFuncCall is an object that describes an invocation of
// method Touch on an instance of MockReposStore.
type ReposStoreTouchFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreTouchFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreTouchFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// ReposStoreWatchFunc describes the behavior when the Watch method of the
// parent MockReposStore instance is invoked.
type ReposStoreWatchFunc struct {
	defaultHook func(context.Context, int64, int64) error
	hooks       []func(context.Context, int64, int64) error
	history     []ReposStoreWatchFuncCall
	mutex       sync.Mutex
}

// Watch delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockReposStore) Watch(v0 context.Context, v1 int64, v2 int64) error {
	r0 := m.WatchFunc.nextHook()(v0, v1, v2)
	m.WatchFunc.appendCall(ReposStoreWatchFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Watch method of the
// parent MockReposStore instance is invoked and the hook queue is empty.
func (f *ReposStoreWatchFunc) SetDefaultHook(hook func(context.Context, int64, int64) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Watch method of the parent MockReposStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *ReposStoreWatchFunc) PushHook(hook func(context.Context, int64, int64) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *ReposStoreWatchFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, int64) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *ReposStoreWatchFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, int64) error {
		return r0
	})
}

func (f *ReposStoreWatchFunc) nextHook() func(context.Context, int64, int64) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *ReposStoreWatchFunc) appendCall(r0 ReposStoreWatchFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of ReposStoreWatchFuncCall objects describing
// the invocations of this function.
func (f *ReposStoreWatchFunc) History() []ReposStoreWatchFuncCall {
	f.mutex.Lock()
	history := make([]ReposStoreWatchFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// ReposStoreWatchFuncCall is an object that describes an invocation of
// method Watch on an instance of MockReposStore.
type ReposStoreWatchFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c ReposStoreWatchFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c ReposStoreWatchFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// MockTwoFactorsStore is a mock implementation of the TwoFactorsStore
// interface (from the package gogs.io/gogs/internal/db) used for unit
// testing.
type MockTwoFactorsStore struct {
	// CreateFunc is an instance of a mock function object controlling the
	// behavior of the method Create.
	CreateFunc *TwoFactorsStoreCreateFunc
	// GetByUserIDFunc is an instance of a mock function object controlling
	// the behavior of the method GetByUserID.
	GetByUserIDFunc *TwoFactorsStoreGetByUserIDFunc
	// IsEnabledFunc is an instance of a mock function object controlling
	// the behavior of the method IsEnabled.
	IsEnabledFunc *TwoFactorsStoreIsEnabledFunc
}

// NewMockTwoFactorsStore creates a new mock of the TwoFactorsStore
// interface. All methods return zero values for all results, unless
// overwritten.
func NewMockTwoFactorsStore() *MockTwoFactorsStore {
	return &MockTwoFactorsStore{
		CreateFunc: &TwoFactorsStoreCreateFunc{
			defaultHook: func(context.Context, int64, string, string) (r0 error) {
				return
			},
		},
		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
			defaultHook: func(context.Context, int64) (r0 *db.TwoFactor, r1 error) {
				return
			},
		},
		IsEnabledFunc: &TwoFactorsStoreIsEnabledFunc{
			defaultHook: func(context.Context, int64) (r0 bool) {
				return
			},
		},
	}
}

// NewStrictMockTwoFactorsStore creates a new mock of the TwoFactorsStore
// interface. All methods panic on invocation, unless overwritten.
func NewStrictMockTwoFactorsStore() *MockTwoFactorsStore {
	return &MockTwoFactorsStore{
		CreateFunc: &TwoFactorsStoreCreateFunc{
			defaultHook: func(context.Context, int64, string, string) error {
				panic("unexpected invocation of MockTwoFactorsStore.Create")
			},
		},
		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
			defaultHook: func(context.Context, int64) (*db.TwoFactor, error) {
				panic("unexpected invocation of MockTwoFactorsStore.GetByUserID")
			},
		},
		IsEnabledFunc: &TwoFactorsStoreIsEnabledFunc{
			defaultHook: func(context.Context, int64) bool {
				panic("unexpected invocation of MockTwoFactorsStore.IsEnabled")
			},
		},
	}
}

// NewMockTwoFactorsStoreFrom creates a new mock of the MockTwoFactorsStore
// interface. All methods delegate to the given implementation, unless
// overwritten.
func NewMockTwoFactorsStoreFrom(i db.TwoFactorsStore) *MockTwoFactorsStore {
	return &MockTwoFactorsStore{
		CreateFunc: &TwoFactorsStoreCreateFunc{
			defaultHook: i.Create,
		},
		GetByUserIDFunc: &TwoFactorsStoreGetByUserIDFunc{
			defaultHook: i.GetByUserID,
		},
		IsEnabledFunc: &TwoFactorsStoreIsEnabledFunc{
			defaultHook: i.IsEnabled,
		},
	}
}

// TwoFactorsStoreCreateFunc describes the behavior when the Create method
// of the parent MockTwoFactorsStore instance is invoked.
type TwoFactorsStoreCreateFunc struct {
	defaultHook func(context.Context, int64, string, string) error
	hooks       []func(context.Context, int64, string, string) error
	history     []TwoFactorsStoreCreateFuncCall
	mutex       sync.Mutex
}

// Create delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockTwoFactorsStore) Create(v0 context.Context, v1 int64, v2 string, v3 string) error {
	r0 := m.CreateFunc.nextHook()(v0, v1, v2, v3)
	m.CreateFunc.appendCall(TwoFactorsStoreCreateFuncCall{v0, v1, v2, v3, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Create method of the
// parent MockTwoFactorsStore instance is invoked and the hook queue is
// empty.
func (f *TwoFactorsStoreCreateFunc) SetDefaultHook(hook func(context.Context, int64, string, string) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Create method of the parent MockTwoFactorsStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *TwoFactorsStoreCreateFunc) PushHook(hook func(context.Context, int64, string, string) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *TwoFactorsStoreCreateFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, string, string) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *TwoFactorsStoreCreateFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, string, string) error {
		return r0
	})
}

func (f *TwoFactorsStoreCreateFunc) nextHook() func(context.Context, int64, string, string) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *TwoFactorsStoreCreateFunc) appendCall(r0 TwoFactorsStoreCreateFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of TwoFactorsStoreCreateFuncCall objects
// describing the invocations of this function.
func (f *TwoFactorsStoreCreateFunc) History() []TwoFactorsStoreCreateFuncCall {
	f.mutex.Lock()
	history := make([]TwoFactorsStoreCreateFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// TwoFactorsStoreCreateFuncCall is an object that describes an invocation
// of method Create on an instance of MockTwoFactorsStore.
type TwoFactorsStoreCreateFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c TwoFactorsStoreCreateFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c TwoFactorsStoreCreateFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// TwoFactorsStoreGetByUserIDFunc describes the behavior when the
// GetByUserID method of the parent MockTwoFactorsStore instance is invoked.
type TwoFactorsStoreGetByUserIDFunc struct {
	defaultHook func(context.Context, int64) (*db.TwoFactor, error)
	hooks       []func(context.Context, int64) (*db.TwoFactor, error)
	history     []TwoFactorsStoreGetByUserIDFuncCall
	mutex       sync.Mutex
}

// GetByUserID delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockTwoFactorsStore) GetByUserID(v0 context.Context, v1 int64) (*db.TwoFactor, error) {
	r0, r1 := m.GetByUserIDFunc.nextHook()(v0, v1)
	m.GetByUserIDFunc.appendCall(TwoFactorsStoreGetByUserIDFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetByUserID method
// of the parent MockTwoFactorsStore instance is invoked and the hook queue
// is empty.
func (f *TwoFactorsStoreGetByUserIDFunc) SetDefaultHook(hook func(context.Context, int64) (*db.TwoFactor, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByUserID method of the parent MockTwoFactorsStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *TwoFactorsStoreGetByUserIDFunc) PushHook(hook func(context.Context, int64) (*db.TwoFactor, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *TwoFactorsStoreGetByUserIDFunc) SetDefaultReturn(r0 *db.TwoFactor, r1 error) {
	f.SetDefaultHook(func(context.Context, int64) (*db.TwoFactor, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *TwoFactorsStoreGetByUserIDFunc) PushReturn(r0 *db.TwoFactor, r1 error) {
	f.PushHook(func(context.Context, int64) (*db.TwoFactor, error) {
		return r0, r1
	})
}

func (f *TwoFactorsStoreGetByUserIDFunc) nextHook() func(context.Context, int64) (*db.TwoFactor, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *TwoFactorsStoreGetByUserIDFunc) appendCall(r0 TwoFactorsStoreGetByUserIDFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of TwoFactorsStoreGetByUserIDFuncCall objects
// describing the invocations of this function.
func (f *TwoFactorsStoreGetByUserIDFunc) History() []TwoFactorsStoreGetByUserIDFuncCall {
	f.mutex.Lock()
	history := make([]TwoFactorsStoreGetByUserIDFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// TwoFactorsStoreGetByUserIDFuncCall is an object that describes an
// invocation of method GetByUserID on an instance of MockTwoFactorsStore.
type TwoFactorsStoreGetByUserIDFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.TwoFactor
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c TwoFactorsStoreGetByUserIDFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c TwoFactorsStoreGetByUserIDFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// TwoFactorsStoreIsEnabledFunc describes the behavior when the IsEnabled
// method of the parent MockTwoFactorsStore instance is invoked.
type TwoFactorsStoreIsEnabledFunc struct {
	defaultHook func(context.Context, int64) bool
	hooks       []func(context.Context, int64) bool
	history     []TwoFactorsStoreIsEnabledFuncCall
	mutex       sync.Mutex
}

// IsEnabled delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockTwoFactorsStore) IsEnabled(v0 context.Context, v1 int64) bool {
	r0 := m.IsEnabledFunc.nextHook()(v0, v1)
	m.IsEnabledFunc.appendCall(TwoFactorsStoreIsEnabledFuncCall{v0, v1, r0})
	return r0
}

// SetDefaultHook sets function that is called when the IsEnabled method of
// the parent MockTwoFactorsStore instance is invoked and the hook queue is
// empty.
func (f *TwoFactorsStoreIsEnabledFunc) SetDefaultHook(hook func(context.Context, int64) bool) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// IsEnabled method of the parent MockTwoFactorsStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *TwoFactorsStoreIsEnabledFunc) PushHook(hook func(context.Context, int64) bool) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *TwoFactorsStoreIsEnabledFunc) SetDefaultReturn(r0 bool) {
	f.SetDefaultHook(func(context.Context, int64) bool {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *TwoFactorsStoreIsEnabledFunc) PushReturn(r0 bool) {
	f.PushHook(func(context.Context, int64) bool {
		return r0
	})
}

func (f *TwoFactorsStoreIsEnabledFunc) nextHook() func(context.Context, int64) bool {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *TwoFactorsStoreIsEnabledFunc) appendCall(r0 TwoFactorsStoreIsEnabledFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of TwoFactorsStoreIsEnabledFuncCall objects
// describing the invocations of this function.
func (f *TwoFactorsStoreIsEnabledFunc) History() []TwoFactorsStoreIsEnabledFuncCall {
	f.mutex.Lock()
	history := make([]TwoFactorsStoreIsEnabledFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// TwoFactorsStoreIsEnabledFuncCall is an object that describes an
// invocation of method IsEnabled on an instance of MockTwoFactorsStore.
type TwoFactorsStoreIsEnabledFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 bool
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c TwoFactorsStoreIsEnabledFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c TwoFactorsStoreIsEnabledFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// MockUsersStore is a mock implementation of the UsersStore interface (from
// the package gogs.io/gogs/internal/db) used for unit testing.
type MockUsersStore struct {
	// AddEmailFunc is an instance of a mock function object controlling the
	// behavior of the method AddEmail.
	AddEmailFunc *UsersStoreAddEmailFunc
	// AuthenticateFunc is an instance of a mock function object controlling
	// the behavior of the method Authenticate.
	AuthenticateFunc *UsersStoreAuthenticateFunc
	// ChangeUsernameFunc is an instance of a mock function object
	// controlling the behavior of the method ChangeUsername.
	ChangeUsernameFunc *UsersStoreChangeUsernameFunc
	// CountFunc is an instance of a mock function object controlling the
	// behavior of the method Count.
	CountFunc *UsersStoreCountFunc
	// CreateFunc is an instance of a mock function object controlling the
	// behavior of the method Create.
	CreateFunc *UsersStoreCreateFunc
	// DeleteByIDFunc is an instance of a mock function object controlling
	// the behavior of the method DeleteByID.
	DeleteByIDFunc *UsersStoreDeleteByIDFunc
	// DeleteCustomAvatarFunc is an instance of a mock function object
	// controlling the behavior of the method DeleteCustomAvatar.
	DeleteCustomAvatarFunc *UsersStoreDeleteCustomAvatarFunc
	// DeleteEmailFunc is an instance of a mock function object controlling
	// the behavior of the method DeleteEmail.
	DeleteEmailFunc *UsersStoreDeleteEmailFunc
	// DeleteInactivatedFunc is an instance of a mock function object
	// controlling the behavior of the method DeleteInactivated.
	DeleteInactivatedFunc *UsersStoreDeleteInactivatedFunc
	// FollowFunc is an instance of a mock function object controlling the
	// behavior of the method Follow.
	FollowFunc *UsersStoreFollowFunc
	// GetByEmailFunc is an instance of a mock function object controlling
	// the behavior of the method GetByEmail.
	GetByEmailFunc *UsersStoreGetByEmailFunc
	// GetByIDFunc is an instance of a mock function object controlling the
	// behavior of the method GetByID.
	GetByIDFunc *UsersStoreGetByIDFunc
	// GetByKeyIDFunc is an instance of a mock function object controlling
	// the behavior of the method GetByKeyID.
	GetByKeyIDFunc *UsersStoreGetByKeyIDFunc
	// GetByUsernameFunc is an instance of a mock function object
	// controlling the behavior of the method GetByUsername.
	GetByUsernameFunc *UsersStoreGetByUsernameFunc
	// GetEmailFunc is an instance of a mock function object controlling the
	// behavior of the method GetEmail.
	GetEmailFunc *UsersStoreGetEmailFunc
	// GetMailableEmailsByUsernamesFunc is an instance of a mock function
	// object controlling the behavior of the method
	// GetMailableEmailsByUsernames.
	GetMailableEmailsByUsernamesFunc *UsersStoreGetMailableEmailsByUsernamesFunc
	// IsFollowingFunc is an instance of a mock function object controlling
	// the behavior of the method IsFollowing.
	IsFollowingFunc *UsersStoreIsFollowingFunc
	// IsUsernameUsedFunc is an instance of a mock function object
	// controlling the behavior of the method IsUsernameUsed.
	IsUsernameUsedFunc *UsersStoreIsUsernameUsedFunc
	// ListFunc is an instance of a mock function object controlling the
	// behavior of the method List.
	ListFunc *UsersStoreListFunc
	// ListEmailsFunc is an instance of a mock function object controlling
	// the behavior of the method ListEmails.
	ListEmailsFunc *UsersStoreListEmailsFunc
	// ListFollowersFunc is an instance of a mock function object
	// controlling the behavior of the method ListFollowers.
	ListFollowersFunc *UsersStoreListFollowersFunc
	// ListFollowingsFunc is an instance of a mock function object
	// controlling the behavior of the method ListFollowings.
	ListFollowingsFunc *UsersStoreListFollowingsFunc
	// MarkEmailActivatedFunc is an instance of a mock function object
	// controlling the behavior of the method MarkEmailActivated.
	MarkEmailActivatedFunc *UsersStoreMarkEmailActivatedFunc
	// MarkEmailPrimaryFunc is an instance of a mock function object
	// controlling the behavior of the method MarkEmailPrimary.
	MarkEmailPrimaryFunc *UsersStoreMarkEmailPrimaryFunc
	// SearchByNameFunc is an instance of a mock function object controlling
	// the behavior of the method SearchByName.
	SearchByNameFunc *UsersStoreSearchByNameFunc
	// UnfollowFunc is an instance of a mock function object controlling the
	// behavior of the method Unfollow.
	UnfollowFunc *UsersStoreUnfollowFunc
	// UpdateFunc is an instance of a mock function object controlling the
	// behavior of the method Update.
	UpdateFunc *UsersStoreUpdateFunc
	// UseCustomAvatarFunc is an instance of a mock function object
	// controlling the behavior of the method UseCustomAvatar.
	UseCustomAvatarFunc *UsersStoreUseCustomAvatarFunc
}

// NewMockUsersStore creates a new mock of the UsersStore interface. All
// methods return zero values for all results, unless overwritten.
func NewMockUsersStore() *MockUsersStore {
	return &MockUsersStore{
		AddEmailFunc: &UsersStoreAddEmailFunc{
			defaultHook: func(context.Context, int64, string, bool) (r0 error) {
				return
			},
		},
		AuthenticateFunc: &UsersStoreAuthenticateFunc{
			defaultHook: func(context.Context, string, string, int64) (r0 *db.User, r1 error) {
				return
			},
		},
		ChangeUsernameFunc: &UsersStoreChangeUsernameFunc{
			defaultHook: func(context.Context, int64, string) (r0 error) {
				return
			},
		},
		CountFunc: &UsersStoreCountFunc{
			defaultHook: func(context.Context) (r0 int64) {
				return
			},
		},
		CreateFunc: &UsersStoreCreateFunc{
			defaultHook: func(context.Context, string, string, db.CreateUserOptions) (r0 *db.User, r1 error) {
				return
			},
		},
		DeleteByIDFunc: &UsersStoreDeleteByIDFunc{
			defaultHook: func(context.Context, int64, bool) (r0 error) {
				return
			},
		},
		DeleteCustomAvatarFunc: &UsersStoreDeleteCustomAvatarFunc{
			defaultHook: func(context.Context, int64) (r0 error) {
				return
			},
		},
		DeleteEmailFunc: &UsersStoreDeleteEmailFunc{
			defaultHook: func(context.Context, int64, string) (r0 error) {
				return
			},
		},
		DeleteInactivatedFunc: &UsersStoreDeleteInactivatedFunc{
			defaultHook: func() (r0 error) {
				return
			},
		},
		FollowFunc: &UsersStoreFollowFunc{
			defaultHook: func(context.Context, int64, int64) (r0 error) {
				return
			},
		},
		GetByEmailFunc: &UsersStoreGetByEmailFunc{
			defaultHook: func(context.Context, string) (r0 *db.User, r1 error) {
				return
			},
		},
		GetByIDFunc: &UsersStoreGetByIDFunc{
			defaultHook: func(context.Context, int64) (r0 *db.User, r1 error) {
				return
			},
		},
		GetByKeyIDFunc: &UsersStoreGetByKeyIDFunc{
			defaultHook: func(context.Context, int64) (r0 *db.User, r1 error) {
				return
			},
		},
		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
			defaultHook: func(context.Context, string) (r0 *db.User, r1 error) {
				return
			},
		},
		GetEmailFunc: &UsersStoreGetEmailFunc{
			defaultHook: func(context.Context, int64, string, bool) (r0 *db.EmailAddress, r1 error) {
				return
			},
		},
		GetMailableEmailsByUsernamesFunc: &UsersStoreGetMailableEmailsByUsernamesFunc{
			defaultHook: func(context.Context, []string) (r0 []string, r1 error) {
				return
			},
		},
		IsFollowingFunc: &UsersStoreIsFollowingFunc{
			defaultHook: func(context.Context, int64, int64) (r0 bool) {
				return
			},
		},
		IsUsernameUsedFunc: &UsersStoreIsUsernameUsedFunc{
			defaultHook: func(context.Context, string, int64) (r0 bool) {
				return
			},
		},
		ListFunc: &UsersStoreListFunc{
			defaultHook: func(context.Context, int, int) (r0 []*db.User, r1 error) {
				return
			},
		},
		ListEmailsFunc: &UsersStoreListEmailsFunc{
			defaultHook: func(context.Context, int64) (r0 []*db.EmailAddress, r1 error) {
				return
			},
		},
		ListFollowersFunc: &UsersStoreListFollowersFunc{
			defaultHook: func(context.Context, int64, int, int) (r0 []*db.User, r1 error) {
				return
			},
		},
		ListFollowingsFunc: &UsersStoreListFollowingsFunc{
			defaultHook: func(context.Context, int64, int, int) (r0 []*db.User, r1 error) {
				return
			},
		},
		MarkEmailActivatedFunc: &UsersStoreMarkEmailActivatedFunc{
			defaultHook: func(context.Context, int64, string) (r0 error) {
				return
			},
		},
		MarkEmailPrimaryFunc: &UsersStoreMarkEmailPrimaryFunc{
			defaultHook: func(context.Context, int64, string) (r0 error) {
				return
			},
		},
		SearchByNameFunc: &UsersStoreSearchByNameFunc{
			defaultHook: func(context.Context, string, int, int, string) (r0 []*db.User, r1 int64, r2 error) {
				return
			},
		},
		UnfollowFunc: &UsersStoreUnfollowFunc{
			defaultHook: func(context.Context, int64, int64) (r0 error) {
				return
			},
		},
		UpdateFunc: &UsersStoreUpdateFunc{
			defaultHook: func(context.Context, int64, db.UpdateUserOptions) (r0 error) {
				return
			},
		},
		UseCustomAvatarFunc: &UsersStoreUseCustomAvatarFunc{
			defaultHook: func(context.Context, int64, []byte) (r0 error) {
				return
			},
		},
	}
}

// NewStrictMockUsersStore creates a new mock of the UsersStore interface.
// All methods panic on invocation, unless overwritten.
func NewStrictMockUsersStore() *MockUsersStore {
	return &MockUsersStore{
		AddEmailFunc: &UsersStoreAddEmailFunc{
			defaultHook: func(context.Context, int64, string, bool) error {
				panic("unexpected invocation of MockUsersStore.AddEmail")
			},
		},
		AuthenticateFunc: &UsersStoreAuthenticateFunc{
			defaultHook: func(context.Context, string, string, int64) (*db.User, error) {
				panic("unexpected invocation of MockUsersStore.Authenticate")
			},
		},
		ChangeUsernameFunc: &UsersStoreChangeUsernameFunc{
			defaultHook: func(context.Context, int64, string) error {
				panic("unexpected invocation of MockUsersStore.ChangeUsername")
			},
		},
		CountFunc: &UsersStoreCountFunc{
			defaultHook: func(context.Context) int64 {
				panic("unexpected invocation of MockUsersStore.Count")
			},
		},
		CreateFunc: &UsersStoreCreateFunc{
			defaultHook: func(context.Context, string, string, db.CreateUserOptions) (*db.User, error) {
				panic("unexpected invocation of MockUsersStore.Create")
			},
		},
		DeleteByIDFunc: &UsersStoreDeleteByIDFunc{
			defaultHook: func(context.Context, int64, bool) error {
				panic("unexpected invocation of MockUsersStore.DeleteByID")
			},
		},
		DeleteCustomAvatarFunc: &UsersStoreDeleteCustomAvatarFunc{
			defaultHook: func(context.Context, int64) error {
				panic("unexpected invocation of MockUsersStore.DeleteCustomAvatar")
			},
		},
		DeleteEmailFunc: &UsersStoreDeleteEmailFunc{
			defaultHook: func(context.Context, int64, string) error {
				panic("unexpected invocation of MockUsersStore.DeleteEmail")
			},
		},
		DeleteInactivatedFunc: &UsersStoreDeleteInactivatedFunc{
			defaultHook: func() error {
				panic("unexpected invocation of MockUsersStore.DeleteInactivated")
			},
		},
		FollowFunc: &UsersStoreFollowFunc{
			defaultHook: func(context.Context, int64, int64) error {
				panic("unexpected invocation of MockUsersStore.Follow")
			},
		},
		GetByEmailFunc: &UsersStoreGetByEmailFunc{
			defaultHook: func(context.Context, string) (*db.User, error) {
				panic("unexpected invocation of MockUsersStore.GetByEmail")
			},
		},
		GetByIDFunc: &UsersStoreGetByIDFunc{
			defaultHook: func(context.Context, int64) (*db.User, error) {
				panic("unexpected invocation of MockUsersStore.GetByID")
			},
		},
		GetByKeyIDFunc: &UsersStoreGetByKeyIDFunc{
			defaultHook: func(context.Context, int64) (*db.User, error) {
				panic("unexpected invocation of MockUsersStore.GetByKeyID")
			},
		},
		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
			defaultHook: func(context.Context, string) (*db.User, error) {
				panic("unexpected invocation of MockUsersStore.GetByUsername")
			},
		},
		GetEmailFunc: &UsersStoreGetEmailFunc{
			defaultHook: func(context.Context, int64, string, bool) (*db.EmailAddress, error) {
				panic("unexpected invocation of MockUsersStore.GetEmail")
			},
		},
		GetMailableEmailsByUsernamesFunc: &UsersStoreGetMailableEmailsByUsernamesFunc{
			defaultHook: func(context.Context, []string) ([]string, error) {
				panic("unexpected invocation of MockUsersStore.GetMailableEmailsByUsernames")
			},
		},
		IsFollowingFunc: &UsersStoreIsFollowingFunc{
			defaultHook: func(context.Context, int64, int64) bool {
				panic("unexpected invocation of MockUsersStore.IsFollowing")
			},
		},
		IsUsernameUsedFunc: &UsersStoreIsUsernameUsedFunc{
			defaultHook: func(context.Context, string, int64) bool {
				panic("unexpected invocation of MockUsersStore.IsUsernameUsed")
			},
		},
		ListFunc: &UsersStoreListFunc{
			defaultHook: func(context.Context, int, int) ([]*db.User, error) {
				panic("unexpected invocation of MockUsersStore.List")
			},
		},
		ListEmailsFunc: &UsersStoreListEmailsFunc{
			defaultHook: func(context.Context, int64) ([]*db.EmailAddress, error) {
				panic("unexpected invocation of MockUsersStore.ListEmails")
			},
		},
		ListFollowersFunc: &UsersStoreListFollowersFunc{
			defaultHook: func(context.Context, int64, int, int) ([]*db.User, error) {
				panic("unexpected invocation of MockUsersStore.ListFollowers")
			},
		},
		ListFollowingsFunc: &UsersStoreListFollowingsFunc{
			defaultHook: func(context.Context, int64, int, int) ([]*db.User, error) {
				panic("unexpected invocation of MockUsersStore.ListFollowings")
			},
		},
		MarkEmailActivatedFunc: &UsersStoreMarkEmailActivatedFunc{
			defaultHook: func(context.Context, int64, string) error {
				panic("unexpected invocation of MockUsersStore.MarkEmailActivated")
			},
		},
		MarkEmailPrimaryFunc: &UsersStoreMarkEmailPrimaryFunc{
			defaultHook: func(context.Context, int64, string) error {
				panic("unexpected invocation of MockUsersStore.MarkEmailPrimary")
			},
		},
		SearchByNameFunc: &UsersStoreSearchByNameFunc{
			defaultHook: func(context.Context, string, int, int, string) ([]*db.User, int64, error) {
				panic("unexpected invocation of MockUsersStore.SearchByName")
			},
		},
		UnfollowFunc: &UsersStoreUnfollowFunc{
			defaultHook: func(context.Context, int64, int64) error {
				panic("unexpected invocation of MockUsersStore.Unfollow")
			},
		},
		UpdateFunc: &UsersStoreUpdateFunc{
			defaultHook: func(context.Context, int64, db.UpdateUserOptions) error {
				panic("unexpected invocation of MockUsersStore.Update")
			},
		},
		UseCustomAvatarFunc: &UsersStoreUseCustomAvatarFunc{
			defaultHook: func(context.Context, int64, []byte) error {
				panic("unexpected invocation of MockUsersStore.UseCustomAvatar")
			},
		},
	}
}

// NewMockUsersStoreFrom creates a new mock of the MockUsersStore interface.
// All methods delegate to the given implementation, unless overwritten.
func NewMockUsersStoreFrom(i db.UsersStore) *MockUsersStore {
	return &MockUsersStore{
		AddEmailFunc: &UsersStoreAddEmailFunc{
			defaultHook: i.AddEmail,
		},
		AuthenticateFunc: &UsersStoreAuthenticateFunc{
			defaultHook: i.Authenticate,
		},
		ChangeUsernameFunc: &UsersStoreChangeUsernameFunc{
			defaultHook: i.ChangeUsername,
		},
		CountFunc: &UsersStoreCountFunc{
			defaultHook: i.Count,
		},
		CreateFunc: &UsersStoreCreateFunc{
			defaultHook: i.Create,
		},
		DeleteByIDFunc: &UsersStoreDeleteByIDFunc{
			defaultHook: i.DeleteByID,
		},
		DeleteCustomAvatarFunc: &UsersStoreDeleteCustomAvatarFunc{
			defaultHook: i.DeleteCustomAvatar,
		},
		DeleteEmailFunc: &UsersStoreDeleteEmailFunc{
			defaultHook: i.DeleteEmail,
		},
		DeleteInactivatedFunc: &UsersStoreDeleteInactivatedFunc{
			defaultHook: i.DeleteInactivated,
		},
		FollowFunc: &UsersStoreFollowFunc{
			defaultHook: i.Follow,
		},
		GetByEmailFunc: &UsersStoreGetByEmailFunc{
			defaultHook: i.GetByEmail,
		},
		GetByIDFunc: &UsersStoreGetByIDFunc{
			defaultHook: i.GetByID,
		},
		GetByKeyIDFunc: &UsersStoreGetByKeyIDFunc{
			defaultHook: i.GetByKeyID,
		},
		GetByUsernameFunc: &UsersStoreGetByUsernameFunc{
			defaultHook: i.GetByUsername,
		},
		GetEmailFunc: &UsersStoreGetEmailFunc{
			defaultHook: i.GetEmail,
		},
		GetMailableEmailsByUsernamesFunc: &UsersStoreGetMailableEmailsByUsernamesFunc{
			defaultHook: i.GetMailableEmailsByUsernames,
		},
		IsFollowingFunc: &UsersStoreIsFollowingFunc{
			defaultHook: i.IsFollowing,
		},
		IsUsernameUsedFunc: &UsersStoreIsUsernameUsedFunc{
			defaultHook: i.IsUsernameUsed,
		},
		ListFunc: &UsersStoreListFunc{
			defaultHook: i.List,
		},
		ListEmailsFunc: &UsersStoreListEmailsFunc{
			defaultHook: i.ListEmails,
		},
		ListFollowersFunc: &UsersStoreListFollowersFunc{
			defaultHook: i.ListFollowers,
		},
		ListFollowingsFunc: &UsersStoreListFollowingsFunc{
			defaultHook: i.ListFollowings,
		},
		MarkEmailActivatedFunc: &UsersStoreMarkEmailActivatedFunc{
			defaultHook: i.MarkEmailActivated,
		},
		MarkEmailPrimaryFunc: &UsersStoreMarkEmailPrimaryFunc{
			defaultHook: i.MarkEmailPrimary,
		},
		SearchByNameFunc: &UsersStoreSearchByNameFunc{
			defaultHook: i.SearchByName,
		},
		UnfollowFunc: &UsersStoreUnfollowFunc{
			defaultHook: i.Unfollow,
		},
		UpdateFunc: &UsersStoreUpdateFunc{
			defaultHook: i.Update,
		},
		UseCustomAvatarFunc: &UsersStoreUseCustomAvatarFunc{
			defaultHook: i.UseCustomAvatar,
		},
	}
}

// UsersStoreAddEmailFunc describes the behavior when the AddEmail method of
// the parent MockUsersStore instance is invoked.
type UsersStoreAddEmailFunc struct {
	defaultHook func(context.Context, int64, string, bool) error
	hooks       []func(context.Context, int64, string, bool) error
	history     []UsersStoreAddEmailFuncCall
	mutex       sync.Mutex
}

// AddEmail delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) AddEmail(v0 context.Context, v1 int64, v2 string, v3 bool) error {
	r0 := m.AddEmailFunc.nextHook()(v0, v1, v2, v3)
	m.AddEmailFunc.appendCall(UsersStoreAddEmailFuncCall{v0, v1, v2, v3, r0})
	return r0
}

// SetDefaultHook sets function that is called when the AddEmail method of
// the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreAddEmailFunc) SetDefaultHook(hook func(context.Context, int64, string, bool) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// AddEmail method of the parent MockUsersStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreAddEmailFunc) PushHook(hook func(context.Context, int64, string, bool) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreAddEmailFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, string, bool) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreAddEmailFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, string, bool) error {
		return r0
	})
}

func (f *UsersStoreAddEmailFunc) nextHook() func(context.Context, int64, string, bool) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreAddEmailFunc) appendCall(r0 UsersStoreAddEmailFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreAddEmailFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreAddEmailFunc) History() []UsersStoreAddEmailFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreAddEmailFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreAddEmailFuncCall is an object that describes an invocation of
// method AddEmail on an instance of MockUsersStore.
type UsersStoreAddEmailFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 bool
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreAddEmailFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreAddEmailFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreAuthenticateFunc describes the behavior when the Authenticate
// method of the parent MockUsersStore instance is invoked.
type UsersStoreAuthenticateFunc struct {
	defaultHook func(context.Context, string, string, int64) (*db.User, error)
	hooks       []func(context.Context, string, string, int64) (*db.User, error)
	history     []UsersStoreAuthenticateFuncCall
	mutex       sync.Mutex
}

// Authenticate delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) Authenticate(v0 context.Context, v1 string, v2 string, v3 int64) (*db.User, error) {
	r0, r1 := m.AuthenticateFunc.nextHook()(v0, v1, v2, v3)
	m.AuthenticateFunc.appendCall(UsersStoreAuthenticateFuncCall{v0, v1, v2, v3, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the Authenticate method
// of the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreAuthenticateFunc) SetDefaultHook(hook func(context.Context, string, string, int64) (*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Authenticate method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreAuthenticateFunc) PushHook(hook func(context.Context, string, string, int64) (*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreAuthenticateFunc) SetDefaultReturn(r0 *db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, string, string, int64) (*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreAuthenticateFunc) PushReturn(r0 *db.User, r1 error) {
	f.PushHook(func(context.Context, string, string, int64) (*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreAuthenticateFunc) nextHook() func(context.Context, string, string, int64) (*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreAuthenticateFunc) appendCall(r0 UsersStoreAuthenticateFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreAuthenticateFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreAuthenticateFunc) History() []UsersStoreAuthenticateFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreAuthenticateFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreAuthenticateFuncCall is an object that describes an invocation
// of method Authenticate on an instance of MockUsersStore.
type UsersStoreAuthenticateFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 string
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreAuthenticateFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreAuthenticateFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreChangeUsernameFunc describes the behavior when the
// ChangeUsername method of the parent MockUsersStore instance is invoked.
type UsersStoreChangeUsernameFunc struct {
	defaultHook func(context.Context, int64, string) error
	hooks       []func(context.Context, int64, string) error
	history     []UsersStoreChangeUsernameFuncCall
	mutex       sync.Mutex
}

// ChangeUsername delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockUsersStore) ChangeUsername(v0 context.Context, v1 int64, v2 string) error {
	r0 := m.ChangeUsernameFunc.nextHook()(v0, v1, v2)
	m.ChangeUsernameFunc.appendCall(UsersStoreChangeUsernameFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the ChangeUsername
// method of the parent MockUsersStore instance is invoked and the hook
// queue is empty.
func (f *UsersStoreChangeUsernameFunc) SetDefaultHook(hook func(context.Context, int64, string) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// ChangeUsername method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreChangeUsernameFunc) PushHook(hook func(context.Context, int64, string) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreChangeUsernameFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, string) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreChangeUsernameFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, string) error {
		return r0
	})
}

func (f *UsersStoreChangeUsernameFunc) nextHook() func(context.Context, int64, string) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreChangeUsernameFunc) appendCall(r0 UsersStoreChangeUsernameFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreChangeUsernameFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreChangeUsernameFunc) History() []UsersStoreChangeUsernameFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreChangeUsernameFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreChangeUsernameFuncCall is an object that describes an
// invocation of method ChangeUsername on an instance of MockUsersStore.
type UsersStoreChangeUsernameFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreChangeUsernameFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreChangeUsernameFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreCountFunc describes the behavior when the Count method of the
// parent MockUsersStore instance is invoked.
type UsersStoreCountFunc struct {
	defaultHook func(context.Context) int64
	hooks       []func(context.Context) int64
	history     []UsersStoreCountFuncCall
	mutex       sync.Mutex
}

// Count delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) Count(v0 context.Context) int64 {
	r0 := m.CountFunc.nextHook()(v0)
	m.CountFunc.appendCall(UsersStoreCountFuncCall{v0, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Count method of the
// parent MockUsersStore instance is invoked and the hook queue is empty.
func (f *UsersStoreCountFunc) SetDefaultHook(hook func(context.Context) int64) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Count method of the parent MockUsersStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreCountFunc) PushHook(hook func(context.Context) int64) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreCountFunc) SetDefaultReturn(r0 int64) {
	f.SetDefaultHook(func(context.Context) int64 {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreCountFunc) PushReturn(r0 int64) {
	f.PushHook(func(context.Context) int64 {
		return r0
	})
}

func (f *UsersStoreCountFunc) nextHook() func(context.Context) int64 {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreCountFunc) appendCall(r0 UsersStoreCountFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreCountFuncCall objects describing
// the invocations of this function.
func (f *UsersStoreCountFunc) History() []UsersStoreCountFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreCountFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreCountFuncCall is an object that describes an invocation of
// method Count on an instance of MockUsersStore.
type UsersStoreCountFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 int64
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreCountFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreCountFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreCreateFunc describes the behavior when the Create method of the
// parent MockUsersStore instance is invoked.
type UsersStoreCreateFunc struct {
	defaultHook func(context.Context, string, string, db.CreateUserOptions) (*db.User, error)
	hooks       []func(context.Context, string, string, db.CreateUserOptions) (*db.User, error)
	history     []UsersStoreCreateFuncCall
	mutex       sync.Mutex
}

// Create delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) Create(v0 context.Context, v1 string, v2 string, v3 db.CreateUserOptions) (*db.User, error) {
	r0, r1 := m.CreateFunc.nextHook()(v0, v1, v2, v3)
	m.CreateFunc.appendCall(UsersStoreCreateFuncCall{v0, v1, v2, v3, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the Create method of the
// parent MockUsersStore instance is invoked and the hook queue is empty.
func (f *UsersStoreCreateFunc) SetDefaultHook(hook func(context.Context, string, string, db.CreateUserOptions) (*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Create method of the parent MockUsersStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreCreateFunc) PushHook(hook func(context.Context, string, string, db.CreateUserOptions) (*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreCreateFunc) SetDefaultReturn(r0 *db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, string, string, db.CreateUserOptions) (*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreCreateFunc) PushReturn(r0 *db.User, r1 error) {
	f.PushHook(func(context.Context, string, string, db.CreateUserOptions) (*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreCreateFunc) nextHook() func(context.Context, string, string, db.CreateUserOptions) (*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreCreateFunc) appendCall(r0 UsersStoreCreateFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreCreateFuncCall objects describing
// the invocations of this function.
func (f *UsersStoreCreateFunc) History() []UsersStoreCreateFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreCreateFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreCreateFuncCall is an object that describes an invocation of
// method Create on an instance of MockUsersStore.
type UsersStoreCreateFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 string
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 db.CreateUserOptions
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreCreateFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreCreateFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreDeleteByIDFunc describes the behavior when the DeleteByID
// method of the parent MockUsersStore instance is invoked.
type UsersStoreDeleteByIDFunc struct {
	defaultHook func(context.Context, int64, bool) error
	hooks       []func(context.Context, int64, bool) error
	history     []UsersStoreDeleteByIDFuncCall
	mutex       sync.Mutex
}

// DeleteByID delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) DeleteByID(v0 context.Context, v1 int64, v2 bool) error {
	r0 := m.DeleteByIDFunc.nextHook()(v0, v1, v2)
	m.DeleteByIDFunc.appendCall(UsersStoreDeleteByIDFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the DeleteByID method of
// the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreDeleteByIDFunc) SetDefaultHook(hook func(context.Context, int64, bool) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// DeleteByID method of the parent MockUsersStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreDeleteByIDFunc) PushHook(hook func(context.Context, int64, bool) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreDeleteByIDFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, bool) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreDeleteByIDFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, bool) error {
		return r0
	})
}

func (f *UsersStoreDeleteByIDFunc) nextHook() func(context.Context, int64, bool) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreDeleteByIDFunc) appendCall(r0 UsersStoreDeleteByIDFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreDeleteByIDFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreDeleteByIDFunc) History() []UsersStoreDeleteByIDFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreDeleteByIDFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreDeleteByIDFuncCall is an object that describes an invocation of
// method DeleteByID on an instance of MockUsersStore.
type UsersStoreDeleteByIDFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 bool
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreDeleteByIDFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreDeleteByIDFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreDeleteCustomAvatarFunc describes the behavior when the
// DeleteCustomAvatar method of the parent MockUsersStore instance is
// invoked.
type UsersStoreDeleteCustomAvatarFunc struct {
	defaultHook func(context.Context, int64) error
	hooks       []func(context.Context, int64) error
	history     []UsersStoreDeleteCustomAvatarFuncCall
	mutex       sync.Mutex
}

// DeleteCustomAvatar delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockUsersStore) DeleteCustomAvatar(v0 context.Context, v1 int64) error {
	r0 := m.DeleteCustomAvatarFunc.nextHook()(v0, v1)
	m.DeleteCustomAvatarFunc.appendCall(UsersStoreDeleteCustomAvatarFuncCall{v0, v1, r0})
	return r0
}

// SetDefaultHook sets function that is called when the DeleteCustomAvatar
// method of the parent MockUsersStore instance is invoked and the hook
// queue is empty.
func (f *UsersStoreDeleteCustomAvatarFunc) SetDefaultHook(hook func(context.Context, int64) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// DeleteCustomAvatar method of the parent MockUsersStore instance invokes
// the hook at the front of the queue and discards it. After the queue is
// empty, the default hook function is invoked for any future action.
func (f *UsersStoreDeleteCustomAvatarFunc) PushHook(hook func(context.Context, int64) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreDeleteCustomAvatarFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreDeleteCustomAvatarFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64) error {
		return r0
	})
}

func (f *UsersStoreDeleteCustomAvatarFunc) nextHook() func(context.Context, int64) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreDeleteCustomAvatarFunc) appendCall(r0 UsersStoreDeleteCustomAvatarFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreDeleteCustomAvatarFuncCall
// objects describing the invocations of this function.
func (f *UsersStoreDeleteCustomAvatarFunc) History() []UsersStoreDeleteCustomAvatarFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreDeleteCustomAvatarFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreDeleteCustomAvatarFuncCall is an object that describes an
// invocation of method DeleteCustomAvatar on an instance of MockUsersStore.
type UsersStoreDeleteCustomAvatarFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreDeleteCustomAvatarFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreDeleteCustomAvatarFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreDeleteEmailFunc describes the behavior when the DeleteEmail
// method of the parent MockUsersStore instance is invoked.
type UsersStoreDeleteEmailFunc struct {
	defaultHook func(context.Context, int64, string) error
	hooks       []func(context.Context, int64, string) error
	history     []UsersStoreDeleteEmailFuncCall
	mutex       sync.Mutex
}

// DeleteEmail delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) DeleteEmail(v0 context.Context, v1 int64, v2 string) error {
	r0 := m.DeleteEmailFunc.nextHook()(v0, v1, v2)
	m.DeleteEmailFunc.appendCall(UsersStoreDeleteEmailFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the DeleteEmail method
// of the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreDeleteEmailFunc) SetDefaultHook(hook func(context.Context, int64, string) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// DeleteEmail method of the parent MockUsersStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreDeleteEmailFunc) PushHook(hook func(context.Context, int64, string) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreDeleteEmailFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, string) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreDeleteEmailFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, string) error {
		return r0
	})
}

func (f *UsersStoreDeleteEmailFunc) nextHook() func(context.Context, int64, string) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreDeleteEmailFunc) appendCall(r0 UsersStoreDeleteEmailFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreDeleteEmailFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreDeleteEmailFunc) History() []UsersStoreDeleteEmailFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreDeleteEmailFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreDeleteEmailFuncCall is an object that describes an invocation
// of method DeleteEmail on an instance of MockUsersStore.
type UsersStoreDeleteEmailFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreDeleteEmailFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreDeleteEmailFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreDeleteInactivatedFunc describes the behavior when the
// DeleteInactivated method of the parent MockUsersStore instance is
// invoked.
type UsersStoreDeleteInactivatedFunc struct {
	defaultHook func() error
	hooks       []func() error
	history     []UsersStoreDeleteInactivatedFuncCall
	mutex       sync.Mutex
}

// DeleteInactivated delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockUsersStore) DeleteInactivated() error {
	r0 := m.DeleteInactivatedFunc.nextHook()()
	m.DeleteInactivatedFunc.appendCall(UsersStoreDeleteInactivatedFuncCall{r0})
	return r0
}

// SetDefaultHook sets function that is called when the DeleteInactivated
// method of the parent MockUsersStore instance is invoked and the hook
// queue is empty.
func (f *UsersStoreDeleteInactivatedFunc) SetDefaultHook(hook func() error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// DeleteInactivated method of the parent MockUsersStore instance invokes
// the hook at the front of the queue and discards it. After the queue is
// empty, the default hook function is invoked for any future action.
func (f *UsersStoreDeleteInactivatedFunc) PushHook(hook func() error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreDeleteInactivatedFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func() error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreDeleteInactivatedFunc) PushReturn(r0 error) {
	f.PushHook(func() error {
		return r0
	})
}

func (f *UsersStoreDeleteInactivatedFunc) nextHook() func() error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreDeleteInactivatedFunc) appendCall(r0 UsersStoreDeleteInactivatedFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreDeleteInactivatedFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreDeleteInactivatedFunc) History() []UsersStoreDeleteInactivatedFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreDeleteInactivatedFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreDeleteInactivatedFuncCall is an object that describes an
// invocation of method DeleteInactivated on an instance of MockUsersStore.
type UsersStoreDeleteInactivatedFuncCall struct {
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreDeleteInactivatedFuncCall) Args() []interface{} {
	return []interface{}{}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreDeleteInactivatedFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreFollowFunc describes the behavior when the Follow method of the
// parent MockUsersStore instance is invoked.
type UsersStoreFollowFunc struct {
	defaultHook func(context.Context, int64, int64) error
	hooks       []func(context.Context, int64, int64) error
	history     []UsersStoreFollowFuncCall
	mutex       sync.Mutex
}

// Follow delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) Follow(v0 context.Context, v1 int64, v2 int64) error {
	r0 := m.FollowFunc.nextHook()(v0, v1, v2)
	m.FollowFunc.appendCall(UsersStoreFollowFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Follow method of the
// parent MockUsersStore instance is invoked and the hook queue is empty.
func (f *UsersStoreFollowFunc) SetDefaultHook(hook func(context.Context, int64, int64) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Follow method of the parent MockUsersStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreFollowFunc) PushHook(hook func(context.Context, int64, int64) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreFollowFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, int64) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreFollowFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, int64) error {
		return r0
	})
}

func (f *UsersStoreFollowFunc) nextHook() func(context.Context, int64, int64) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreFollowFunc) appendCall(r0 UsersStoreFollowFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreFollowFuncCall objects describing
// the invocations of this function.
func (f *UsersStoreFollowFunc) History() []UsersStoreFollowFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreFollowFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreFollowFuncCall is an object that describes an invocation of
// method Follow on an instance of MockUsersStore.
type UsersStoreFollowFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreFollowFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreFollowFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreGetByEmailFunc describes the behavior when the GetByEmail
// method of the parent MockUsersStore instance is invoked.
type UsersStoreGetByEmailFunc struct {
	defaultHook func(context.Context, string) (*db.User, error)
	hooks       []func(context.Context, string) (*db.User, error)
	history     []UsersStoreGetByEmailFuncCall
	mutex       sync.Mutex
}

// GetByEmail delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) GetByEmail(v0 context.Context, v1 string) (*db.User, error) {
	r0, r1 := m.GetByEmailFunc.nextHook()(v0, v1)
	m.GetByEmailFunc.appendCall(UsersStoreGetByEmailFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetByEmail method of
// the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreGetByEmailFunc) SetDefaultHook(hook func(context.Context, string) (*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByEmail method of the parent MockUsersStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreGetByEmailFunc) PushHook(hook func(context.Context, string) (*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreGetByEmailFunc) SetDefaultReturn(r0 *db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, string) (*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreGetByEmailFunc) PushReturn(r0 *db.User, r1 error) {
	f.PushHook(func(context.Context, string) (*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreGetByEmailFunc) nextHook() func(context.Context, string) (*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreGetByEmailFunc) appendCall(r0 UsersStoreGetByEmailFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreGetByEmailFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreGetByEmailFunc) History() []UsersStoreGetByEmailFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreGetByEmailFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreGetByEmailFuncCall is an object that describes an invocation of
// method GetByEmail on an instance of MockUsersStore.
type UsersStoreGetByEmailFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreGetByEmailFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreGetByEmailFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreGetByIDFunc describes the behavior when the GetByID method of
// the parent MockUsersStore instance is invoked.
type UsersStoreGetByIDFunc struct {
	defaultHook func(context.Context, int64) (*db.User, error)
	hooks       []func(context.Context, int64) (*db.User, error)
	history     []UsersStoreGetByIDFuncCall
	mutex       sync.Mutex
}

// GetByID delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) GetByID(v0 context.Context, v1 int64) (*db.User, error) {
	r0, r1 := m.GetByIDFunc.nextHook()(v0, v1)
	m.GetByIDFunc.appendCall(UsersStoreGetByIDFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetByID method of
// the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreGetByIDFunc) SetDefaultHook(hook func(context.Context, int64) (*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByID method of the parent MockUsersStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreGetByIDFunc) PushHook(hook func(context.Context, int64) (*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreGetByIDFunc) SetDefaultReturn(r0 *db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, int64) (*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreGetByIDFunc) PushReturn(r0 *db.User, r1 error) {
	f.PushHook(func(context.Context, int64) (*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreGetByIDFunc) nextHook() func(context.Context, int64) (*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreGetByIDFunc) appendCall(r0 UsersStoreGetByIDFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreGetByIDFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreGetByIDFunc) History() []UsersStoreGetByIDFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreGetByIDFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreGetByIDFuncCall is an object that describes an invocation of
// method GetByID on an instance of MockUsersStore.
type UsersStoreGetByIDFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreGetByIDFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreGetByIDFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreGetByKeyIDFunc describes the behavior when the GetByKeyID
// method of the parent MockUsersStore instance is invoked.
type UsersStoreGetByKeyIDFunc struct {
	defaultHook func(context.Context, int64) (*db.User, error)
	hooks       []func(context.Context, int64) (*db.User, error)
	history     []UsersStoreGetByKeyIDFuncCall
	mutex       sync.Mutex
}

// GetByKeyID delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) GetByKeyID(v0 context.Context, v1 int64) (*db.User, error) {
	r0, r1 := m.GetByKeyIDFunc.nextHook()(v0, v1)
	m.GetByKeyIDFunc.appendCall(UsersStoreGetByKeyIDFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetByKeyID method of
// the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreGetByKeyIDFunc) SetDefaultHook(hook func(context.Context, int64) (*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByKeyID method of the parent MockUsersStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreGetByKeyIDFunc) PushHook(hook func(context.Context, int64) (*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreGetByKeyIDFunc) SetDefaultReturn(r0 *db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, int64) (*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreGetByKeyIDFunc) PushReturn(r0 *db.User, r1 error) {
	f.PushHook(func(context.Context, int64) (*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreGetByKeyIDFunc) nextHook() func(context.Context, int64) (*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreGetByKeyIDFunc) appendCall(r0 UsersStoreGetByKeyIDFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreGetByKeyIDFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreGetByKeyIDFunc) History() []UsersStoreGetByKeyIDFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreGetByKeyIDFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreGetByKeyIDFuncCall is an object that describes an invocation of
// method GetByKeyID on an instance of MockUsersStore.
type UsersStoreGetByKeyIDFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreGetByKeyIDFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreGetByKeyIDFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreGetByUsernameFunc describes the behavior when the GetByUsername
// method of the parent MockUsersStore instance is invoked.
type UsersStoreGetByUsernameFunc struct {
	defaultHook func(context.Context, string) (*db.User, error)
	hooks       []func(context.Context, string) (*db.User, error)
	history     []UsersStoreGetByUsernameFuncCall
	mutex       sync.Mutex
}

// GetByUsername delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) GetByUsername(v0 context.Context, v1 string) (*db.User, error) {
	r0, r1 := m.GetByUsernameFunc.nextHook()(v0, v1)
	m.GetByUsernameFunc.appendCall(UsersStoreGetByUsernameFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetByUsername method
// of the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreGetByUsernameFunc) SetDefaultHook(hook func(context.Context, string) (*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetByUsername method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreGetByUsernameFunc) PushHook(hook func(context.Context, string) (*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreGetByUsernameFunc) SetDefaultReturn(r0 *db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, string) (*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreGetByUsernameFunc) PushReturn(r0 *db.User, r1 error) {
	f.PushHook(func(context.Context, string) (*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreGetByUsernameFunc) nextHook() func(context.Context, string) (*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreGetByUsernameFunc) appendCall(r0 UsersStoreGetByUsernameFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreGetByUsernameFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreGetByUsernameFunc) History() []UsersStoreGetByUsernameFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreGetByUsernameFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreGetByUsernameFuncCall is an object that describes an invocation
// of method GetByUsername on an instance of MockUsersStore.
type UsersStoreGetByUsernameFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreGetByUsernameFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreGetByUsernameFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreGetEmailFunc describes the behavior when the GetEmail method of
// the parent MockUsersStore instance is invoked.
type UsersStoreGetEmailFunc struct {
	defaultHook func(context.Context, int64, string, bool) (*db.EmailAddress, error)
	hooks       []func(context.Context, int64, string, bool) (*db.EmailAddress, error)
	history     []UsersStoreGetEmailFuncCall
	mutex       sync.Mutex
}

// GetEmail delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) GetEmail(v0 context.Context, v1 int64, v2 string, v3 bool) (*db.EmailAddress, error) {
	r0, r1 := m.GetEmailFunc.nextHook()(v0, v1, v2, v3)
	m.GetEmailFunc.appendCall(UsersStoreGetEmailFuncCall{v0, v1, v2, v3, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the GetEmail method of
// the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreGetEmailFunc) SetDefaultHook(hook func(context.Context, int64, string, bool) (*db.EmailAddress, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetEmail method of the parent MockUsersStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreGetEmailFunc) PushHook(hook func(context.Context, int64, string, bool) (*db.EmailAddress, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreGetEmailFunc) SetDefaultReturn(r0 *db.EmailAddress, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, string, bool) (*db.EmailAddress, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreGetEmailFunc) PushReturn(r0 *db.EmailAddress, r1 error) {
	f.PushHook(func(context.Context, int64, string, bool) (*db.EmailAddress, error) {
		return r0, r1
	})
}

func (f *UsersStoreGetEmailFunc) nextHook() func(context.Context, int64, string, bool) (*db.EmailAddress, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreGetEmailFunc) appendCall(r0 UsersStoreGetEmailFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreGetEmailFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreGetEmailFunc) History() []UsersStoreGetEmailFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreGetEmailFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreGetEmailFuncCall is an object that describes an invocation of
// method GetEmail on an instance of MockUsersStore.
type UsersStoreGetEmailFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 bool
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 *db.EmailAddress
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreGetEmailFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreGetEmailFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreGetMailableEmailsByUsernamesFunc describes the behavior when
// the GetMailableEmailsByUsernames method of the parent MockUsersStore
// instance is invoked.
type UsersStoreGetMailableEmailsByUsernamesFunc struct {
	defaultHook func(context.Context, []string) ([]string, error)
	hooks       []func(context.Context, []string) ([]string, error)
	history     []UsersStoreGetMailableEmailsByUsernamesFuncCall
	mutex       sync.Mutex
}

// GetMailableEmailsByUsernames delegates to the next hook function in the
// queue and stores the parameter and result values of this invocation.
func (m *MockUsersStore) GetMailableEmailsByUsernames(v0 context.Context, v1 []string) ([]string, error) {
	r0, r1 := m.GetMailableEmailsByUsernamesFunc.nextHook()(v0, v1)
	m.GetMailableEmailsByUsernamesFunc.appendCall(UsersStoreGetMailableEmailsByUsernamesFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the
// GetMailableEmailsByUsernames method of the parent MockUsersStore instance
// is invoked and the hook queue is empty.
func (f *UsersStoreGetMailableEmailsByUsernamesFunc) SetDefaultHook(hook func(context.Context, []string) ([]string, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// GetMailableEmailsByUsernames method of the parent MockUsersStore instance
// invokes the hook at the front of the queue and discards it. After the
// queue is empty, the default hook function is invoked for any future
// action.
func (f *UsersStoreGetMailableEmailsByUsernamesFunc) PushHook(hook func(context.Context, []string) ([]string, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreGetMailableEmailsByUsernamesFunc) SetDefaultReturn(r0 []string, r1 error) {
	f.SetDefaultHook(func(context.Context, []string) ([]string, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreGetMailableEmailsByUsernamesFunc) PushReturn(r0 []string, r1 error) {
	f.PushHook(func(context.Context, []string) ([]string, error) {
		return r0, r1
	})
}

func (f *UsersStoreGetMailableEmailsByUsernamesFunc) nextHook() func(context.Context, []string) ([]string, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreGetMailableEmailsByUsernamesFunc) appendCall(r0 UsersStoreGetMailableEmailsByUsernamesFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of
// UsersStoreGetMailableEmailsByUsernamesFuncCall objects describing the
// invocations of this function.
func (f *UsersStoreGetMailableEmailsByUsernamesFunc) History() []UsersStoreGetMailableEmailsByUsernamesFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreGetMailableEmailsByUsernamesFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreGetMailableEmailsByUsernamesFuncCall is an object that
// describes an invocation of method GetMailableEmailsByUsernames on an
// instance of MockUsersStore.
type UsersStoreGetMailableEmailsByUsernamesFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 []string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []string
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreGetMailableEmailsByUsernamesFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreGetMailableEmailsByUsernamesFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreIsFollowingFunc describes the behavior when the IsFollowing
// method of the parent MockUsersStore instance is invoked.
type UsersStoreIsFollowingFunc struct {
	defaultHook func(context.Context, int64, int64) bool
	hooks       []func(context.Context, int64, int64) bool
	history     []UsersStoreIsFollowingFuncCall
	mutex       sync.Mutex
}

// IsFollowing delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) IsFollowing(v0 context.Context, v1 int64, v2 int64) bool {
	r0 := m.IsFollowingFunc.nextHook()(v0, v1, v2)
	m.IsFollowingFunc.appendCall(UsersStoreIsFollowingFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the IsFollowing method
// of the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreIsFollowingFunc) SetDefaultHook(hook func(context.Context, int64, int64) bool) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// IsFollowing method of the parent MockUsersStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreIsFollowingFunc) PushHook(hook func(context.Context, int64, int64) bool) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreIsFollowingFunc) SetDefaultReturn(r0 bool) {
	f.SetDefaultHook(func(context.Context, int64, int64) bool {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreIsFollowingFunc) PushReturn(r0 bool) {
	f.PushHook(func(context.Context, int64, int64) bool {
		return r0
	})
}

func (f *UsersStoreIsFollowingFunc) nextHook() func(context.Context, int64, int64) bool {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreIsFollowingFunc) appendCall(r0 UsersStoreIsFollowingFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreIsFollowingFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreIsFollowingFunc) History() []UsersStoreIsFollowingFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreIsFollowingFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreIsFollowingFuncCall is an object that describes an invocation
// of method IsFollowing on an instance of MockUsersStore.
type UsersStoreIsFollowingFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 bool
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreIsFollowingFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreIsFollowingFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreIsUsernameUsedFunc describes the behavior when the
// IsUsernameUsed method of the parent MockUsersStore instance is invoked.
type UsersStoreIsUsernameUsedFunc struct {
	defaultHook func(context.Context, string, int64) bool
	hooks       []func(context.Context, string, int64) bool
	history     []UsersStoreIsUsernameUsedFuncCall
	mutex       sync.Mutex
}

// IsUsernameUsed delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockUsersStore) IsUsernameUsed(v0 context.Context, v1 string, v2 int64) bool {
	r0 := m.IsUsernameUsedFunc.nextHook()(v0, v1, v2)
	m.IsUsernameUsedFunc.appendCall(UsersStoreIsUsernameUsedFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the IsUsernameUsed
// method of the parent MockUsersStore instance is invoked and the hook
// queue is empty.
func (f *UsersStoreIsUsernameUsedFunc) SetDefaultHook(hook func(context.Context, string, int64) bool) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// IsUsernameUsed method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreIsUsernameUsedFunc) PushHook(hook func(context.Context, string, int64) bool) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreIsUsernameUsedFunc) SetDefaultReturn(r0 bool) {
	f.SetDefaultHook(func(context.Context, string, int64) bool {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreIsUsernameUsedFunc) PushReturn(r0 bool) {
	f.PushHook(func(context.Context, string, int64) bool {
		return r0
	})
}

func (f *UsersStoreIsUsernameUsedFunc) nextHook() func(context.Context, string, int64) bool {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreIsUsernameUsedFunc) appendCall(r0 UsersStoreIsUsernameUsedFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreIsUsernameUsedFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreIsUsernameUsedFunc) History() []UsersStoreIsUsernameUsedFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreIsUsernameUsedFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreIsUsernameUsedFuncCall is an object that describes an
// invocation of method IsUsernameUsed on an instance of MockUsersStore.
type UsersStoreIsUsernameUsedFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 string
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 bool
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreIsUsernameUsedFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreIsUsernameUsedFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreListFunc describes the behavior when the List method of the
// parent MockUsersStore instance is invoked.
type UsersStoreListFunc struct {
	defaultHook func(context.Context, int, int) ([]*db.User, error)
	hooks       []func(context.Context, int, int) ([]*db.User, error)
	history     []UsersStoreListFuncCall
	mutex       sync.Mutex
}

// List delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) List(v0 context.Context, v1 int, v2 int) ([]*db.User, error) {
	r0, r1 := m.ListFunc.nextHook()(v0, v1, v2)
	m.ListFunc.appendCall(UsersStoreListFuncCall{v0, v1, v2, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the List method of the
// parent MockUsersStore instance is invoked and the hook queue is empty.
func (f *UsersStoreListFunc) SetDefaultHook(hook func(context.Context, int, int) ([]*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// List method of the parent MockUsersStore instance invokes the hook at the
// front of the queue and discards it. After the queue is empty, the default
// hook function is invoked for any future action.
func (f *UsersStoreListFunc) PushHook(hook func(context.Context, int, int) ([]*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreListFunc) SetDefaultReturn(r0 []*db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, int, int) ([]*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreListFunc) PushReturn(r0 []*db.User, r1 error) {
	f.PushHook(func(context.Context, int, int) ([]*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreListFunc) nextHook() func(context.Context, int, int) ([]*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreListFunc) appendCall(r0 UsersStoreListFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreListFuncCall objects describing
// the invocations of this function.
func (f *UsersStoreListFunc) History() []UsersStoreListFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreListFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreListFuncCall is an object that describes an invocation of
// method List on an instance of MockUsersStore.
type UsersStoreListFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreListFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreListFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreListEmailsFunc describes the behavior when the ListEmails
// method of the parent MockUsersStore instance is invoked.
type UsersStoreListEmailsFunc struct {
	defaultHook func(context.Context, int64) ([]*db.EmailAddress, error)
	hooks       []func(context.Context, int64) ([]*db.EmailAddress, error)
	history     []UsersStoreListEmailsFuncCall
	mutex       sync.Mutex
}

// ListEmails delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) ListEmails(v0 context.Context, v1 int64) ([]*db.EmailAddress, error) {
	r0, r1 := m.ListEmailsFunc.nextHook()(v0, v1)
	m.ListEmailsFunc.appendCall(UsersStoreListEmailsFuncCall{v0, v1, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the ListEmails method of
// the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreListEmailsFunc) SetDefaultHook(hook func(context.Context, int64) ([]*db.EmailAddress, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// ListEmails method of the parent MockUsersStore instance invokes the hook
// at the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreListEmailsFunc) PushHook(hook func(context.Context, int64) ([]*db.EmailAddress, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreListEmailsFunc) SetDefaultReturn(r0 []*db.EmailAddress, r1 error) {
	f.SetDefaultHook(func(context.Context, int64) ([]*db.EmailAddress, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreListEmailsFunc) PushReturn(r0 []*db.EmailAddress, r1 error) {
	f.PushHook(func(context.Context, int64) ([]*db.EmailAddress, error) {
		return r0, r1
	})
}

func (f *UsersStoreListEmailsFunc) nextHook() func(context.Context, int64) ([]*db.EmailAddress, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreListEmailsFunc) appendCall(r0 UsersStoreListEmailsFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreListEmailsFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreListEmailsFunc) History() []UsersStoreListEmailsFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreListEmailsFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreListEmailsFuncCall is an object that describes an invocation of
// method ListEmails on an instance of MockUsersStore.
type UsersStoreListEmailsFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.EmailAddress
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreListEmailsFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreListEmailsFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreListFollowersFunc describes the behavior when the ListFollowers
// method of the parent MockUsersStore instance is invoked.
type UsersStoreListFollowersFunc struct {
	defaultHook func(context.Context, int64, int, int) ([]*db.User, error)
	hooks       []func(context.Context, int64, int, int) ([]*db.User, error)
	history     []UsersStoreListFollowersFuncCall
	mutex       sync.Mutex
}

// ListFollowers delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) ListFollowers(v0 context.Context, v1 int64, v2 int, v3 int) ([]*db.User, error) {
	r0, r1 := m.ListFollowersFunc.nextHook()(v0, v1, v2, v3)
	m.ListFollowersFunc.appendCall(UsersStoreListFollowersFuncCall{v0, v1, v2, v3, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the ListFollowers method
// of the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreListFollowersFunc) SetDefaultHook(hook func(context.Context, int64, int, int) ([]*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// ListFollowers method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreListFollowersFunc) PushHook(hook func(context.Context, int64, int, int) ([]*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreListFollowersFunc) SetDefaultReturn(r0 []*db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, int, int) ([]*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreListFollowersFunc) PushReturn(r0 []*db.User, r1 error) {
	f.PushHook(func(context.Context, int64, int, int) ([]*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreListFollowersFunc) nextHook() func(context.Context, int64, int, int) ([]*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreListFollowersFunc) appendCall(r0 UsersStoreListFollowersFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreListFollowersFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreListFollowersFunc) History() []UsersStoreListFollowersFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreListFollowersFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreListFollowersFuncCall is an object that describes an invocation
// of method ListFollowers on an instance of MockUsersStore.
type UsersStoreListFollowersFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 int
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreListFollowersFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreListFollowersFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreListFollowingsFunc describes the behavior when the
// ListFollowings method of the parent MockUsersStore instance is invoked.
type UsersStoreListFollowingsFunc struct {
	defaultHook func(context.Context, int64, int, int) ([]*db.User, error)
	hooks       []func(context.Context, int64, int, int) ([]*db.User, error)
	history     []UsersStoreListFollowingsFuncCall
	mutex       sync.Mutex
}

// ListFollowings delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockUsersStore) ListFollowings(v0 context.Context, v1 int64, v2 int, v3 int) ([]*db.User, error) {
	r0, r1 := m.ListFollowingsFunc.nextHook()(v0, v1, v2, v3)
	m.ListFollowingsFunc.appendCall(UsersStoreListFollowingsFuncCall{v0, v1, v2, v3, r0, r1})
	return r0, r1
}

// SetDefaultHook sets function that is called when the ListFollowings
// method of the parent MockUsersStore instance is invoked and the hook
// queue is empty.
func (f *UsersStoreListFollowingsFunc) SetDefaultHook(hook func(context.Context, int64, int, int) ([]*db.User, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// ListFollowings method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreListFollowingsFunc) PushHook(hook func(context.Context, int64, int, int) ([]*db.User, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreListFollowingsFunc) SetDefaultReturn(r0 []*db.User, r1 error) {
	f.SetDefaultHook(func(context.Context, int64, int, int) ([]*db.User, error) {
		return r0, r1
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreListFollowingsFunc) PushReturn(r0 []*db.User, r1 error) {
	f.PushHook(func(context.Context, int64, int, int) ([]*db.User, error) {
		return r0, r1
	})
}

func (f *UsersStoreListFollowingsFunc) nextHook() func(context.Context, int64, int, int) ([]*db.User, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreListFollowingsFunc) appendCall(r0 UsersStoreListFollowingsFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreListFollowingsFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreListFollowingsFunc) History() []UsersStoreListFollowingsFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreListFollowingsFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreListFollowingsFuncCall is an object that describes an
// invocation of method ListFollowings on an instance of MockUsersStore.
type UsersStoreListFollowingsFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 int
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreListFollowingsFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreListFollowingsFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1}
}

// UsersStoreMarkEmailActivatedFunc describes the behavior when the
// MarkEmailActivated method of the parent MockUsersStore instance is
// invoked.
type UsersStoreMarkEmailActivatedFunc struct {
	defaultHook func(context.Context, int64, string) error
	hooks       []func(context.Context, int64, string) error
	history     []UsersStoreMarkEmailActivatedFuncCall
	mutex       sync.Mutex
}

// MarkEmailActivated delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockUsersStore) MarkEmailActivated(v0 context.Context, v1 int64, v2 string) error {
	r0 := m.MarkEmailActivatedFunc.nextHook()(v0, v1, v2)
	m.MarkEmailActivatedFunc.appendCall(UsersStoreMarkEmailActivatedFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the MarkEmailActivated
// method of the parent MockUsersStore instance is invoked and the hook
// queue is empty.
func (f *UsersStoreMarkEmailActivatedFunc) SetDefaultHook(hook func(context.Context, int64, string) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// MarkEmailActivated method of the parent MockUsersStore instance invokes
// the hook at the front of the queue and discards it. After the queue is
// empty, the default hook function is invoked for any future action.
func (f *UsersStoreMarkEmailActivatedFunc) PushHook(hook func(context.Context, int64, string) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreMarkEmailActivatedFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, string) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreMarkEmailActivatedFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, string) error {
		return r0
	})
}

func (f *UsersStoreMarkEmailActivatedFunc) nextHook() func(context.Context, int64, string) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreMarkEmailActivatedFunc) appendCall(r0 UsersStoreMarkEmailActivatedFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreMarkEmailActivatedFuncCall
// objects describing the invocations of this function.
func (f *UsersStoreMarkEmailActivatedFunc) History() []UsersStoreMarkEmailActivatedFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreMarkEmailActivatedFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreMarkEmailActivatedFuncCall is an object that describes an
// invocation of method MarkEmailActivated on an instance of MockUsersStore.
type UsersStoreMarkEmailActivatedFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreMarkEmailActivatedFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreMarkEmailActivatedFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreMarkEmailPrimaryFunc describes the behavior when the
// MarkEmailPrimary method of the parent MockUsersStore instance is invoked.
type UsersStoreMarkEmailPrimaryFunc struct {
	defaultHook func(context.Context, int64, string) error
	hooks       []func(context.Context, int64, string) error
	history     []UsersStoreMarkEmailPrimaryFuncCall
	mutex       sync.Mutex
}

// MarkEmailPrimary delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockUsersStore) MarkEmailPrimary(v0 context.Context, v1 int64, v2 string) error {
	r0 := m.MarkEmailPrimaryFunc.nextHook()(v0, v1, v2)
	m.MarkEmailPrimaryFunc.appendCall(UsersStoreMarkEmailPrimaryFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the MarkEmailPrimary
// method of the parent MockUsersStore instance is invoked and the hook
// queue is empty.
func (f *UsersStoreMarkEmailPrimaryFunc) SetDefaultHook(hook func(context.Context, int64, string) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// MarkEmailPrimary method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreMarkEmailPrimaryFunc) PushHook(hook func(context.Context, int64, string) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreMarkEmailPrimaryFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, string) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreMarkEmailPrimaryFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, string) error {
		return r0
	})
}

func (f *UsersStoreMarkEmailPrimaryFunc) nextHook() func(context.Context, int64, string) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreMarkEmailPrimaryFunc) appendCall(r0 UsersStoreMarkEmailPrimaryFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreMarkEmailPrimaryFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreMarkEmailPrimaryFunc) History() []UsersStoreMarkEmailPrimaryFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreMarkEmailPrimaryFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreMarkEmailPrimaryFuncCall is an object that describes an
// invocation of method MarkEmailPrimary on an instance of MockUsersStore.
type UsersStoreMarkEmailPrimaryFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreMarkEmailPrimaryFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreMarkEmailPrimaryFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreSearchByNameFunc describes the behavior when the SearchByName
// method of the parent MockUsersStore instance is invoked.
type UsersStoreSearchByNameFunc struct {
	defaultHook func(context.Context, string, int, int, string) ([]*db.User, int64, error)
	hooks       []func(context.Context, string, int, int, string) ([]*db.User, int64, error)
	history     []UsersStoreSearchByNameFuncCall
	mutex       sync.Mutex
}

// SearchByName delegates to the next hook function in the queue and stores
// the parameter and result values of this invocation.
func (m *MockUsersStore) SearchByName(v0 context.Context, v1 string, v2 int, v3 int, v4 string) ([]*db.User, int64, error) {
	r0, r1, r2 := m.SearchByNameFunc.nextHook()(v0, v1, v2, v3, v4)
	m.SearchByNameFunc.appendCall(UsersStoreSearchByNameFuncCall{v0, v1, v2, v3, v4, r0, r1, r2})
	return r0, r1, r2
}

// SetDefaultHook sets function that is called when the SearchByName method
// of the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreSearchByNameFunc) SetDefaultHook(hook func(context.Context, string, int, int, string) ([]*db.User, int64, error)) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// SearchByName method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreSearchByNameFunc) PushHook(hook func(context.Context, string, int, int, string) ([]*db.User, int64, error)) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreSearchByNameFunc) SetDefaultReturn(r0 []*db.User, r1 int64, r2 error) {
	f.SetDefaultHook(func(context.Context, string, int, int, string) ([]*db.User, int64, error) {
		return r0, r1, r2
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreSearchByNameFunc) PushReturn(r0 []*db.User, r1 int64, r2 error) {
	f.PushHook(func(context.Context, string, int, int, string) ([]*db.User, int64, error) {
		return r0, r1, r2
	})
}

func (f *UsersStoreSearchByNameFunc) nextHook() func(context.Context, string, int, int, string) ([]*db.User, int64, error) {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreSearchByNameFunc) appendCall(r0 UsersStoreSearchByNameFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreSearchByNameFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreSearchByNameFunc) History() []UsersStoreSearchByNameFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreSearchByNameFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreSearchByNameFuncCall is an object that describes an invocation
// of method SearchByName on an instance of MockUsersStore.
type UsersStoreSearchByNameFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 string
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int
	// Arg3 is the value of the 4th argument passed to this method
	// invocation.
	Arg3 int
	// Arg4 is the value of the 5th argument passed to this method
	// invocation.
	Arg4 string
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 []*db.User
	// Result1 is the value of the 2nd result returned from this method
	// invocation.
	Result1 int64
	// Result2 is the value of the 3rd result returned from this method
	// invocation.
	Result2 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreSearchByNameFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2, c.Arg3, c.Arg4}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreSearchByNameFuncCall) Results() []interface{} {
	return []interface{}{c.Result0, c.Result1, c.Result2}
}

// UsersStoreUnfollowFunc describes the behavior when the Unfollow method of
// the parent MockUsersStore instance is invoked.
type UsersStoreUnfollowFunc struct {
	defaultHook func(context.Context, int64, int64) error
	hooks       []func(context.Context, int64, int64) error
	history     []UsersStoreUnfollowFuncCall
	mutex       sync.Mutex
}

// Unfollow delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) Unfollow(v0 context.Context, v1 int64, v2 int64) error {
	r0 := m.UnfollowFunc.nextHook()(v0, v1, v2)
	m.UnfollowFunc.appendCall(UsersStoreUnfollowFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Unfollow method of
// the parent MockUsersStore instance is invoked and the hook queue is
// empty.
func (f *UsersStoreUnfollowFunc) SetDefaultHook(hook func(context.Context, int64, int64) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Unfollow method of the parent MockUsersStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreUnfollowFunc) PushHook(hook func(context.Context, int64, int64) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreUnfollowFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, int64) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreUnfollowFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, int64) error {
		return r0
	})
}

func (f *UsersStoreUnfollowFunc) nextHook() func(context.Context, int64, int64) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreUnfollowFunc) appendCall(r0 UsersStoreUnfollowFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreUnfollowFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreUnfollowFunc) History() []UsersStoreUnfollowFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreUnfollowFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreUnfollowFuncCall is an object that describes an invocation of
// method Unfollow on an instance of MockUsersStore.
type UsersStoreUnfollowFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 int64
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreUnfollowFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreUnfollowFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreUpdateFunc describes the behavior when the Update method of the
// parent MockUsersStore instance is invoked.
type UsersStoreUpdateFunc struct {
	defaultHook func(context.Context, int64, db.UpdateUserOptions) error
	hooks       []func(context.Context, int64, db.UpdateUserOptions) error
	history     []UsersStoreUpdateFuncCall
	mutex       sync.Mutex
}

// Update delegates to the next hook function in the queue and stores the
// parameter and result values of this invocation.
func (m *MockUsersStore) Update(v0 context.Context, v1 int64, v2 db.UpdateUserOptions) error {
	r0 := m.UpdateFunc.nextHook()(v0, v1, v2)
	m.UpdateFunc.appendCall(UsersStoreUpdateFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the Update method of the
// parent MockUsersStore instance is invoked and the hook queue is empty.
func (f *UsersStoreUpdateFunc) SetDefaultHook(hook func(context.Context, int64, db.UpdateUserOptions) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// Update method of the parent MockUsersStore instance invokes the hook at
// the front of the queue and discards it. After the queue is empty, the
// default hook function is invoked for any future action.
func (f *UsersStoreUpdateFunc) PushHook(hook func(context.Context, int64, db.UpdateUserOptions) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreUpdateFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, db.UpdateUserOptions) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreUpdateFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, db.UpdateUserOptions) error {
		return r0
	})
}

func (f *UsersStoreUpdateFunc) nextHook() func(context.Context, int64, db.UpdateUserOptions) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreUpdateFunc) appendCall(r0 UsersStoreUpdateFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreUpdateFuncCall objects describing
// the invocations of this function.
func (f *UsersStoreUpdateFunc) History() []UsersStoreUpdateFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreUpdateFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreUpdateFuncCall is an object that describes an invocation of
// method Update on an instance of MockUsersStore.
type UsersStoreUpdateFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 db.UpdateUserOptions
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreUpdateFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreUpdateFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}

// UsersStoreUseCustomAvatarFunc describes the behavior when the
// UseCustomAvatar method of the parent MockUsersStore instance is invoked.
type UsersStoreUseCustomAvatarFunc struct {
	defaultHook func(context.Context, int64, []byte) error
	hooks       []func(context.Context, int64, []byte) error
	history     []UsersStoreUseCustomAvatarFuncCall
	mutex       sync.Mutex
}

// UseCustomAvatar delegates to the next hook function in the queue and
// stores the parameter and result values of this invocation.
func (m *MockUsersStore) UseCustomAvatar(v0 context.Context, v1 int64, v2 []byte) error {
	r0 := m.UseCustomAvatarFunc.nextHook()(v0, v1, v2)
	m.UseCustomAvatarFunc.appendCall(UsersStoreUseCustomAvatarFuncCall{v0, v1, v2, r0})
	return r0
}

// SetDefaultHook sets function that is called when the UseCustomAvatar
// method of the parent MockUsersStore instance is invoked and the hook
// queue is empty.
func (f *UsersStoreUseCustomAvatarFunc) SetDefaultHook(hook func(context.Context, int64, []byte) error) {
	f.defaultHook = hook
}

// PushHook adds a function to the end of hook queue. Each invocation of the
// UseCustomAvatar method of the parent MockUsersStore instance invokes the
// hook at the front of the queue and discards it. After the queue is empty,
// the default hook function is invoked for any future action.
func (f *UsersStoreUseCustomAvatarFunc) PushHook(hook func(context.Context, int64, []byte) error) {
	f.mutex.Lock()
	f.hooks = append(f.hooks, hook)
	f.mutex.Unlock()
}

// SetDefaultReturn calls SetDefaultHook with a function that returns the
// given values.
func (f *UsersStoreUseCustomAvatarFunc) SetDefaultReturn(r0 error) {
	f.SetDefaultHook(func(context.Context, int64, []byte) error {
		return r0
	})
}

// PushReturn calls PushHook with a function that returns the given values.
func (f *UsersStoreUseCustomAvatarFunc) PushReturn(r0 error) {
	f.PushHook(func(context.Context, int64, []byte) error {
		return r0
	})
}

func (f *UsersStoreUseCustomAvatarFunc) nextHook() func(context.Context, int64, []byte) error {
	f.mutex.Lock()
	defer f.mutex.Unlock()

	if len(f.hooks) == 0 {
		return f.defaultHook
	}

	hook := f.hooks[0]
	f.hooks = f.hooks[1:]
	return hook
}

func (f *UsersStoreUseCustomAvatarFunc) appendCall(r0 UsersStoreUseCustomAvatarFuncCall) {
	f.mutex.Lock()
	f.history = append(f.history, r0)
	f.mutex.Unlock()
}

// History returns a sequence of UsersStoreUseCustomAvatarFuncCall objects
// describing the invocations of this function.
func (f *UsersStoreUseCustomAvatarFunc) History() []UsersStoreUseCustomAvatarFuncCall {
	f.mutex.Lock()
	history := make([]UsersStoreUseCustomAvatarFuncCall, len(f.history))
	copy(history, f.history)
	f.mutex.Unlock()

	return history
}

// UsersStoreUseCustomAvatarFuncCall is an object that describes an
// invocation of method UseCustomAvatar on an instance of MockUsersStore.
type UsersStoreUseCustomAvatarFuncCall struct {
	// Arg0 is the value of the 1st argument passed to this method
	// invocation.
	Arg0 context.Context
	// Arg1 is the value of the 2nd argument passed to this method
	// invocation.
	Arg1 int64
	// Arg2 is the value of the 3rd argument passed to this method
	// invocation.
	Arg2 []byte
	// Result0 is the value of the 1st result returned from this method
	// invocation.
	Result0 error
}

// Args returns an interface slice containing the arguments of this
// invocation.
func (c UsersStoreUseCustomAvatarFuncCall) Args() []interface{} {
	return []interface{}{c.Arg0, c.Arg1, c.Arg2}
}

// Results returns an interface slice containing the results of this
// invocation.
func (c UsersStoreUseCustomAvatarFuncCall) Results() []interface{} {
	return []interface{}{c.Result0}
}
