// Code generated by MockGen. DO NOT EDIT.
// Source: segment_user.go
//
// Generated by this command:
//
//	mockgen -source=segment_user.go -package=mock -destination=./mock/segment_user.go
//

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

import (
	context "context"
	reflect "reflect"

	gomock "go.uber.org/mock/gomock"

	domain "github.com/bucketeer-io/bucketeer/v2/pkg/feature/domain"
	mysql "github.com/bucketeer-io/bucketeer/v2/pkg/storage/v2/mysql"
	feature "github.com/bucketeer-io/bucketeer/v2/proto/feature"
)

// MockSegmentUserStorage is a mock of SegmentUserStorage interface.
type MockSegmentUserStorage struct {
	ctrl     *gomock.Controller
	recorder *MockSegmentUserStorageMockRecorder
}

// MockSegmentUserStorageMockRecorder is the mock recorder for MockSegmentUserStorage.
type MockSegmentUserStorageMockRecorder struct {
	mock *MockSegmentUserStorage
}

// NewMockSegmentUserStorage creates a new mock instance.
func NewMockSegmentUserStorage(ctrl *gomock.Controller) *MockSegmentUserStorage {
	mock := &MockSegmentUserStorage{ctrl: ctrl}
	mock.recorder = &MockSegmentUserStorageMockRecorder{mock}
	return mock
}

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

// GetSegmentUser mocks base method.
func (m *MockSegmentUserStorage) GetSegmentUser(ctx context.Context, id, environmentId string) (*domain.SegmentUser, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetSegmentUser", ctx, id, environmentId)
	ret0, _ := ret[0].(*domain.SegmentUser)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

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

// ListSegmentUsers mocks base method.
func (m *MockSegmentUserStorage) ListSegmentUsers(ctx context.Context, whereParts []mysql.WherePart, orders []*mysql.Order, limit, offset int) ([]*feature.SegmentUser, int, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListSegmentUsers", ctx, whereParts, orders, limit, offset)
	ret0, _ := ret[0].([]*feature.SegmentUser)
	ret1, _ := ret[1].(int)
	ret2, _ := ret[2].(error)
	return ret0, ret1, ret2
}

// ListSegmentUsers indicates an expected call of ListSegmentUsers.
func (mr *MockSegmentUserStorageMockRecorder) ListSegmentUsers(ctx, whereParts, orders, limit, offset any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSegmentUsers", reflect.TypeOf((*MockSegmentUserStorage)(nil).ListSegmentUsers), ctx, whereParts, orders, limit, offset)
}

// UpsertSegmentUsers mocks base method.
func (m *MockSegmentUserStorage) UpsertSegmentUsers(ctx context.Context, users []*feature.SegmentUser, environmentId string) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UpsertSegmentUsers", ctx, users, environmentId)
	ret0, _ := ret[0].(error)
	return ret0
}

// UpsertSegmentUsers indicates an expected call of UpsertSegmentUsers.
func (mr *MockSegmentUserStorageMockRecorder) UpsertSegmentUsers(ctx, users, environmentId any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpsertSegmentUsers", reflect.TypeOf((*MockSegmentUserStorage)(nil).UpsertSegmentUsers), ctx, users, environmentId)
}
