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

package servicemock

import (
	"github.com/asgardeo/thunder/internal/system/error/serviceerror"
	"github.com/asgardeo/thunder/internal/user/model"
	mock "github.com/stretchr/testify/mock"
)

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

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

	return mock
}

// UserServiceInterfaceMock is an autogenerated mock type for the UserServiceInterface type
type UserServiceInterfaceMock struct {
	mock.Mock
}

type UserServiceInterfaceMock_Expecter struct {
	mock *mock.Mock
}

func (_m *UserServiceInterfaceMock) EXPECT() *UserServiceInterfaceMock_Expecter {
	return &UserServiceInterfaceMock_Expecter{mock: &_m.Mock}
}

// AuthenticateUser provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) AuthenticateUser(request model.AuthenticateUserRequest) (*model.AuthenticateUserResponse, *serviceerror.ServiceError) {
	ret := _mock.Called(request)

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

	var r0 *model.AuthenticateUserResponse
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(model.AuthenticateUserRequest) (*model.AuthenticateUserResponse, *serviceerror.ServiceError)); ok {
		return returnFunc(request)
	}
	if returnFunc, ok := ret.Get(0).(func(model.AuthenticateUserRequest) *model.AuthenticateUserResponse); ok {
		r0 = returnFunc(request)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.AuthenticateUserResponse)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(model.AuthenticateUserRequest) *serviceerror.ServiceError); ok {
		r1 = returnFunc(request)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// AuthenticateUser is a helper method to define mock.On call
//   - request model.AuthenticateUserRequest
func (_e *UserServiceInterfaceMock_Expecter) AuthenticateUser(request interface{}) *UserServiceInterfaceMock_AuthenticateUser_Call {
	return &UserServiceInterfaceMock_AuthenticateUser_Call{Call: _e.mock.On("AuthenticateUser", request)}
}

func (_c *UserServiceInterfaceMock_AuthenticateUser_Call) Run(run func(request model.AuthenticateUserRequest)) *UserServiceInterfaceMock_AuthenticateUser_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 model.AuthenticateUserRequest
		if args[0] != nil {
			arg0 = args[0].(model.AuthenticateUserRequest)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_AuthenticateUser_Call) Return(authenticateUserResponse *model.AuthenticateUserResponse, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_AuthenticateUser_Call {
	_c.Call.Return(authenticateUserResponse, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_AuthenticateUser_Call) RunAndReturn(run func(request model.AuthenticateUserRequest) (*model.AuthenticateUserResponse, *serviceerror.ServiceError)) *UserServiceInterfaceMock_AuthenticateUser_Call {
	_c.Call.Return(run)
	return _c
}

// CreateUser provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) CreateUser(user *model.User) (*model.User, *serviceerror.ServiceError) {
	ret := _mock.Called(user)

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

	var r0 *model.User
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(*model.User) (*model.User, *serviceerror.ServiceError)); ok {
		return returnFunc(user)
	}
	if returnFunc, ok := ret.Get(0).(func(*model.User) *model.User); ok {
		r0 = returnFunc(user)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.User)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(*model.User) *serviceerror.ServiceError); ok {
		r1 = returnFunc(user)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// CreateUser is a helper method to define mock.On call
//   - user *model.User
func (_e *UserServiceInterfaceMock_Expecter) CreateUser(user interface{}) *UserServiceInterfaceMock_CreateUser_Call {
	return &UserServiceInterfaceMock_CreateUser_Call{Call: _e.mock.On("CreateUser", user)}
}

func (_c *UserServiceInterfaceMock_CreateUser_Call) Run(run func(user *model.User)) *UserServiceInterfaceMock_CreateUser_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 *model.User
		if args[0] != nil {
			arg0 = args[0].(*model.User)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_CreateUser_Call) Return(user1 *model.User, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_CreateUser_Call {
	_c.Call.Return(user1, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_CreateUser_Call) RunAndReturn(run func(user *model.User) (*model.User, *serviceerror.ServiceError)) *UserServiceInterfaceMock_CreateUser_Call {
	_c.Call.Return(run)
	return _c
}

// CreateUserByPath provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) CreateUserByPath(handlePath string, request model.CreateUserByPathRequest) (*model.User, *serviceerror.ServiceError) {
	ret := _mock.Called(handlePath, request)

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

	var r0 *model.User
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(string, model.CreateUserByPathRequest) (*model.User, *serviceerror.ServiceError)); ok {
		return returnFunc(handlePath, request)
	}
	if returnFunc, ok := ret.Get(0).(func(string, model.CreateUserByPathRequest) *model.User); ok {
		r0 = returnFunc(handlePath, request)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.User)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(string, model.CreateUserByPathRequest) *serviceerror.ServiceError); ok {
		r1 = returnFunc(handlePath, request)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// CreateUserByPath is a helper method to define mock.On call
//   - handlePath string
//   - request model.CreateUserByPathRequest
func (_e *UserServiceInterfaceMock_Expecter) CreateUserByPath(handlePath interface{}, request interface{}) *UserServiceInterfaceMock_CreateUserByPath_Call {
	return &UserServiceInterfaceMock_CreateUserByPath_Call{Call: _e.mock.On("CreateUserByPath", handlePath, request)}
}

func (_c *UserServiceInterfaceMock_CreateUserByPath_Call) Run(run func(handlePath string, request model.CreateUserByPathRequest)) *UserServiceInterfaceMock_CreateUserByPath_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 string
		if args[0] != nil {
			arg0 = args[0].(string)
		}
		var arg1 model.CreateUserByPathRequest
		if args[1] != nil {
			arg1 = args[1].(model.CreateUserByPathRequest)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_CreateUserByPath_Call) Return(user *model.User, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_CreateUserByPath_Call {
	_c.Call.Return(user, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_CreateUserByPath_Call) RunAndReturn(run func(handlePath string, request model.CreateUserByPathRequest) (*model.User, *serviceerror.ServiceError)) *UserServiceInterfaceMock_CreateUserByPath_Call {
	_c.Call.Return(run)
	return _c
}

// DeleteUser provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) DeleteUser(userID string) *serviceerror.ServiceError {
	ret := _mock.Called(userID)

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

	var r0 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(string) *serviceerror.ServiceError); ok {
		r0 = returnFunc(userID)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*serviceerror.ServiceError)
		}
	}
	return r0
}

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

// DeleteUser is a helper method to define mock.On call
//   - userID string
func (_e *UserServiceInterfaceMock_Expecter) DeleteUser(userID interface{}) *UserServiceInterfaceMock_DeleteUser_Call {
	return &UserServiceInterfaceMock_DeleteUser_Call{Call: _e.mock.On("DeleteUser", userID)}
}

func (_c *UserServiceInterfaceMock_DeleteUser_Call) Run(run func(userID string)) *UserServiceInterfaceMock_DeleteUser_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 string
		if args[0] != nil {
			arg0 = args[0].(string)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_DeleteUser_Call) Return(serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_DeleteUser_Call {
	_c.Call.Return(serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_DeleteUser_Call) RunAndReturn(run func(userID string) *serviceerror.ServiceError) *UserServiceInterfaceMock_DeleteUser_Call {
	_c.Call.Return(run)
	return _c
}

// GetUser provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) GetUser(userID string) (*model.User, *serviceerror.ServiceError) {
	ret := _mock.Called(userID)

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

	var r0 *model.User
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(string) (*model.User, *serviceerror.ServiceError)); ok {
		return returnFunc(userID)
	}
	if returnFunc, ok := ret.Get(0).(func(string) *model.User); ok {
		r0 = returnFunc(userID)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.User)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(string) *serviceerror.ServiceError); ok {
		r1 = returnFunc(userID)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// GetUser is a helper method to define mock.On call
//   - userID string
func (_e *UserServiceInterfaceMock_Expecter) GetUser(userID interface{}) *UserServiceInterfaceMock_GetUser_Call {
	return &UserServiceInterfaceMock_GetUser_Call{Call: _e.mock.On("GetUser", userID)}
}

func (_c *UserServiceInterfaceMock_GetUser_Call) Run(run func(userID string)) *UserServiceInterfaceMock_GetUser_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 string
		if args[0] != nil {
			arg0 = args[0].(string)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_GetUser_Call) Return(user *model.User, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_GetUser_Call {
	_c.Call.Return(user, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_GetUser_Call) RunAndReturn(run func(userID string) (*model.User, *serviceerror.ServiceError)) *UserServiceInterfaceMock_GetUser_Call {
	_c.Call.Return(run)
	return _c
}

// GetUserList provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) GetUserList(limit int, offset int, filters map[string]interface{}) (*model.UserListResponse, *serviceerror.ServiceError) {
	ret := _mock.Called(limit, offset, filters)

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

	var r0 *model.UserListResponse
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(int, int, map[string]interface{}) (*model.UserListResponse, *serviceerror.ServiceError)); ok {
		return returnFunc(limit, offset, filters)
	}
	if returnFunc, ok := ret.Get(0).(func(int, int, map[string]interface{}) *model.UserListResponse); ok {
		r0 = returnFunc(limit, offset, filters)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.UserListResponse)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(int, int, map[string]interface{}) *serviceerror.ServiceError); ok {
		r1 = returnFunc(limit, offset, filters)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// GetUserList is a helper method to define mock.On call
//   - limit int
//   - offset int
//   - filters map[string]interface{}
func (_e *UserServiceInterfaceMock_Expecter) GetUserList(limit interface{}, offset interface{}, filters interface{}) *UserServiceInterfaceMock_GetUserList_Call {
	return &UserServiceInterfaceMock_GetUserList_Call{Call: _e.mock.On("GetUserList", limit, offset, filters)}
}

func (_c *UserServiceInterfaceMock_GetUserList_Call) Run(run func(limit int, offset int, filters map[string]interface{})) *UserServiceInterfaceMock_GetUserList_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 int
		if args[0] != nil {
			arg0 = args[0].(int)
		}
		var arg1 int
		if args[1] != nil {
			arg1 = args[1].(int)
		}
		var arg2 map[string]interface{}
		if args[2] != nil {
			arg2 = args[2].(map[string]interface{})
		}
		run(
			arg0,
			arg1,
			arg2,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_GetUserList_Call) Return(userListResponse *model.UserListResponse, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_GetUserList_Call {
	_c.Call.Return(userListResponse, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_GetUserList_Call) RunAndReturn(run func(limit int, offset int, filters map[string]interface{}) (*model.UserListResponse, *serviceerror.ServiceError)) *UserServiceInterfaceMock_GetUserList_Call {
	_c.Call.Return(run)
	return _c
}

// GetUsersByPath provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) GetUsersByPath(handlePath string, limit int, offset int, filters map[string]interface{}) (*model.UserListResponse, *serviceerror.ServiceError) {
	ret := _mock.Called(handlePath, limit, offset, filters)

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

	var r0 *model.UserListResponse
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(string, int, int, map[string]interface{}) (*model.UserListResponse, *serviceerror.ServiceError)); ok {
		return returnFunc(handlePath, limit, offset, filters)
	}
	if returnFunc, ok := ret.Get(0).(func(string, int, int, map[string]interface{}) *model.UserListResponse); ok {
		r0 = returnFunc(handlePath, limit, offset, filters)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.UserListResponse)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(string, int, int, map[string]interface{}) *serviceerror.ServiceError); ok {
		r1 = returnFunc(handlePath, limit, offset, filters)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// GetUsersByPath is a helper method to define mock.On call
//   - handlePath string
//   - limit int
//   - offset int
//   - filters map[string]interface{}
func (_e *UserServiceInterfaceMock_Expecter) GetUsersByPath(handlePath interface{}, limit interface{}, offset interface{}, filters interface{}) *UserServiceInterfaceMock_GetUsersByPath_Call {
	return &UserServiceInterfaceMock_GetUsersByPath_Call{Call: _e.mock.On("GetUsersByPath", handlePath, limit, offset, filters)}
}

func (_c *UserServiceInterfaceMock_GetUsersByPath_Call) Run(run func(handlePath string, limit int, offset int, filters map[string]interface{})) *UserServiceInterfaceMock_GetUsersByPath_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 string
		if args[0] != nil {
			arg0 = args[0].(string)
		}
		var arg1 int
		if args[1] != nil {
			arg1 = args[1].(int)
		}
		var arg2 int
		if args[2] != nil {
			arg2 = args[2].(int)
		}
		var arg3 map[string]interface{}
		if args[3] != nil {
			arg3 = args[3].(map[string]interface{})
		}
		run(
			arg0,
			arg1,
			arg2,
			arg3,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_GetUsersByPath_Call) Return(userListResponse *model.UserListResponse, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_GetUsersByPath_Call {
	_c.Call.Return(userListResponse, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_GetUsersByPath_Call) RunAndReturn(run func(handlePath string, limit int, offset int, filters map[string]interface{}) (*model.UserListResponse, *serviceerror.ServiceError)) *UserServiceInterfaceMock_GetUsersByPath_Call {
	_c.Call.Return(run)
	return _c
}

// IdentifyUser provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) IdentifyUser(filters map[string]interface{}) (*string, *serviceerror.ServiceError) {
	ret := _mock.Called(filters)

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

	var r0 *string
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(map[string]interface{}) (*string, *serviceerror.ServiceError)); ok {
		return returnFunc(filters)
	}
	if returnFunc, ok := ret.Get(0).(func(map[string]interface{}) *string); ok {
		r0 = returnFunc(filters)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*string)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(map[string]interface{}) *serviceerror.ServiceError); ok {
		r1 = returnFunc(filters)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// IdentifyUser is a helper method to define mock.On call
//   - filters map[string]interface{}
func (_e *UserServiceInterfaceMock_Expecter) IdentifyUser(filters interface{}) *UserServiceInterfaceMock_IdentifyUser_Call {
	return &UserServiceInterfaceMock_IdentifyUser_Call{Call: _e.mock.On("IdentifyUser", filters)}
}

func (_c *UserServiceInterfaceMock_IdentifyUser_Call) Run(run func(filters map[string]interface{})) *UserServiceInterfaceMock_IdentifyUser_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 map[string]interface{}
		if args[0] != nil {
			arg0 = args[0].(map[string]interface{})
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_IdentifyUser_Call) Return(s *string, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_IdentifyUser_Call {
	_c.Call.Return(s, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_IdentifyUser_Call) RunAndReturn(run func(filters map[string]interface{}) (*string, *serviceerror.ServiceError)) *UserServiceInterfaceMock_IdentifyUser_Call {
	_c.Call.Return(run)
	return _c
}

// UpdateUser provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) UpdateUser(userID string, user *model.User) (*model.User, *serviceerror.ServiceError) {
	ret := _mock.Called(userID, user)

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

	var r0 *model.User
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(string, *model.User) (*model.User, *serviceerror.ServiceError)); ok {
		return returnFunc(userID, user)
	}
	if returnFunc, ok := ret.Get(0).(func(string, *model.User) *model.User); ok {
		r0 = returnFunc(userID, user)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.User)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(string, *model.User) *serviceerror.ServiceError); ok {
		r1 = returnFunc(userID, user)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// UpdateUser is a helper method to define mock.On call
//   - userID string
//   - user *model.User
func (_e *UserServiceInterfaceMock_Expecter) UpdateUser(userID interface{}, user interface{}) *UserServiceInterfaceMock_UpdateUser_Call {
	return &UserServiceInterfaceMock_UpdateUser_Call{Call: _e.mock.On("UpdateUser", userID, user)}
}

func (_c *UserServiceInterfaceMock_UpdateUser_Call) Run(run func(userID string, user *model.User)) *UserServiceInterfaceMock_UpdateUser_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 string
		if args[0] != nil {
			arg0 = args[0].(string)
		}
		var arg1 *model.User
		if args[1] != nil {
			arg1 = args[1].(*model.User)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_UpdateUser_Call) Return(user1 *model.User, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_UpdateUser_Call {
	_c.Call.Return(user1, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_UpdateUser_Call) RunAndReturn(run func(userID string, user *model.User) (*model.User, *serviceerror.ServiceError)) *UserServiceInterfaceMock_UpdateUser_Call {
	_c.Call.Return(run)
	return _c
}

// ValidateUserIDs provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) ValidateUserIDs(userIDs []string) ([]string, *serviceerror.ServiceError) {
	ret := _mock.Called(userIDs)

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

	var r0 []string
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func([]string) ([]string, *serviceerror.ServiceError)); ok {
		return returnFunc(userIDs)
	}
	if returnFunc, ok := ret.Get(0).(func([]string) []string); ok {
		r0 = returnFunc(userIDs)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]string)
		}
	}
	if returnFunc, ok := ret.Get(1).(func([]string) *serviceerror.ServiceError); ok {
		r1 = returnFunc(userIDs)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// ValidateUserIDs is a helper method to define mock.On call
//   - userIDs []string
func (_e *UserServiceInterfaceMock_Expecter) ValidateUserIDs(userIDs interface{}) *UserServiceInterfaceMock_ValidateUserIDs_Call {
	return &UserServiceInterfaceMock_ValidateUserIDs_Call{Call: _e.mock.On("ValidateUserIDs", userIDs)}
}

func (_c *UserServiceInterfaceMock_ValidateUserIDs_Call) Run(run func(userIDs []string)) *UserServiceInterfaceMock_ValidateUserIDs_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 []string
		if args[0] != nil {
			arg0 = args[0].([]string)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_ValidateUserIDs_Call) Return(strings []string, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_ValidateUserIDs_Call {
	_c.Call.Return(strings, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_ValidateUserIDs_Call) RunAndReturn(run func(userIDs []string) ([]string, *serviceerror.ServiceError)) *UserServiceInterfaceMock_ValidateUserIDs_Call {
	_c.Call.Return(run)
	return _c
}

// VerifyUser provides a mock function for the type UserServiceInterfaceMock
func (_mock *UserServiceInterfaceMock) VerifyUser(userID string, credentials map[string]interface{}) (*model.User, *serviceerror.ServiceError) {
	ret := _mock.Called(userID, credentials)

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

	var r0 *model.User
	var r1 *serviceerror.ServiceError
	if returnFunc, ok := ret.Get(0).(func(string, map[string]interface{}) (*model.User, *serviceerror.ServiceError)); ok {
		return returnFunc(userID, credentials)
	}
	if returnFunc, ok := ret.Get(0).(func(string, map[string]interface{}) *model.User); ok {
		r0 = returnFunc(userID, credentials)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.User)
		}
	}
	if returnFunc, ok := ret.Get(1).(func(string, map[string]interface{}) *serviceerror.ServiceError); ok {
		r1 = returnFunc(userID, credentials)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*serviceerror.ServiceError)
		}
	}
	return r0, r1
}

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

// VerifyUser is a helper method to define mock.On call
//   - userID string
//   - credentials map[string]interface{}
func (_e *UserServiceInterfaceMock_Expecter) VerifyUser(userID interface{}, credentials interface{}) *UserServiceInterfaceMock_VerifyUser_Call {
	return &UserServiceInterfaceMock_VerifyUser_Call{Call: _e.mock.On("VerifyUser", userID, credentials)}
}

func (_c *UserServiceInterfaceMock_VerifyUser_Call) Run(run func(userID string, credentials map[string]interface{})) *UserServiceInterfaceMock_VerifyUser_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 string
		if args[0] != nil {
			arg0 = args[0].(string)
		}
		var arg1 map[string]interface{}
		if args[1] != nil {
			arg1 = args[1].(map[string]interface{})
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *UserServiceInterfaceMock_VerifyUser_Call) Return(user *model.User, serviceError *serviceerror.ServiceError) *UserServiceInterfaceMock_VerifyUser_Call {
	_c.Call.Return(user, serviceError)
	return _c
}

func (_c *UserServiceInterfaceMock_VerifyUser_Call) RunAndReturn(run func(userID string, credentials map[string]interface{}) (*model.User, *serviceerror.ServiceError)) *UserServiceInterfaceMock_VerifyUser_Call {
	_c.Call.Return(run)
	return _c
}
