diff --git a/Makefile b/Makefile index 1dcd6fc..0ce1139 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: fmt check-fmt lint vet test +.PHONY: fmt lint test mocks test_coverage GO_PKGS := $(shell go list -f {{.Dir}} ./...) @@ -15,3 +15,6 @@ test: test_coverage: @go test -race -v $(GO_FLAGS) -count=1 -coverprofile=coverage.out -covermode=atomic $(GO_PKGS) @go tool cover -html coverage.out + +mocks: + @go generate ./... diff --git a/README.md b/README.md index 83a3516..3056c65 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,15 @@ func main() { Global job options can be set when creating a scheduler using `NewScheduler`. - [**Scheduler options**](https://pkg.go.dev/github.com/go-co-op/gocron/v2#SchedulerOption): Scheduler options can be set when creating a scheduler using `NewScheduler`. +- **Logging**: Logs can be enabled. + - [Logger](https://pkg.go.dev/github.com/go-co-op/gocron/v2#Logger): + The Logger interface can be implemented with your desired logging library. + The provided NewLogger uses the standard library's log package. +- **Mocking**: The gocron library is set up to enable testing. + - Mocks are provided in [the mock package](mocks) using [gomock](https://github.com/uber-go/mock). + - Time can be mocked by passing in a [FakeClock](https://pkg.go.dev/github.com/jonboulle/clockwork#FakeClock) + to [WithClock](https://pkg.go.dev/github.com/go-co-op/gocron/v2#WithClock) - + see the example on WithClock in the go-docs. ## Supporters diff --git a/distributed.go b/distributed.go index aef77a0..7ca9f09 100644 --- a/distributed.go +++ b/distributed.go @@ -1,3 +1,4 @@ +//go:generate mockgen -source=distributed.go -destination=mocks/distributed.go -package=gocronmocks package gocron import "context" diff --git a/job.go b/job.go index 4c68244..2f7e928 100644 --- a/job.go +++ b/job.go @@ -1,3 +1,4 @@ +//go:generate mockgen -source=job.go -destination=mocks/job.go -package=gocronmocks package gocron import ( diff --git a/logger.go b/logger.go index dd102b8..ae7c8bb 100644 --- a/logger.go +++ b/logger.go @@ -1,3 +1,4 @@ +//go:generate mockgen -source=logger.go -destination=mocks/logger.go -package=gocronmocks package gocron import ( diff --git a/mocks/README.md b/mocks/README.md new file mode 100644 index 0000000..4ead997 --- /dev/null +++ b/mocks/README.md @@ -0,0 +1,35 @@ +# gocron mocks + +## Quick Start + +``` +go get github.com/go-co-op/gocronmocks/v2 +``` + +write a test +```golang +package main + +import ( + "testing" + + "github.com/go-co-op/gocron/v2" + "github.com/go-co-op/gocronmocks/v2" + "go.uber.org/mock/gomock" +) + +func myFunc(s gocron.Scheduler) { + s.Start() + _ = s.Shutdown() +} + +func TestMyFunc(t *testing.T) { + ctrl := gomock.NewController(t) + s := gocronmocks.NewMockScheduler(ctrl) + s.EXPECT().Start().Times(1) + s.EXPECT().Shutdown().Times(1).Return(nil) + + myFunc(s) +} + +``` diff --git a/mocks/distributed.go b/mocks/distributed.go new file mode 100644 index 0000000..51131af --- /dev/null +++ b/mocks/distributed.go @@ -0,0 +1,53 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: distributed.go +// +// Generated by this command: +// +// mockgen -source=distributed.go -destination=mocks/distributed.go -package=gocronmocks +// +// Package gocronmocks is a generated GoMock package. +package gocronmocks + +import ( + context "context" + reflect "reflect" + + gomock "go.uber.org/mock/gomock" +) + +// MockElector is a mock of Elector interface. +type MockElector struct { + ctrl *gomock.Controller + recorder *MockElectorMockRecorder +} + +// MockElectorMockRecorder is the mock recorder for MockElector. +type MockElectorMockRecorder struct { + mock *MockElector +} + +// NewMockElector creates a new mock instance. +func NewMockElector(ctrl *gomock.Controller) *MockElector { + mock := &MockElector{ctrl: ctrl} + mock.recorder = &MockElectorMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockElector) EXPECT() *MockElectorMockRecorder { + return m.recorder +} + +// IsLeader mocks base method. +func (m *MockElector) IsLeader(arg0 context.Context) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "IsLeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// IsLeader indicates an expected call of IsLeader. +func (mr *MockElectorMockRecorder) IsLeader(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsLeader", reflect.TypeOf((*MockElector)(nil).IsLeader), arg0) +} diff --git a/mocks/go.mod b/mocks/go.mod new file mode 100644 index 0000000..855f473 --- /dev/null +++ b/mocks/go.mod @@ -0,0 +1,15 @@ +module github.com/go-co-op/gocronmocks/v2 + +go 1.20 + +require ( + github.com/go-co-op/gocron/v2 v2.0.0-rc1 + github.com/google/uuid v1.4.0 + go.uber.org/mock v0.3.0 +) + +require ( + github.com/jonboulle/clockwork v0.4.0 // indirect + github.com/robfig/cron/v3 v3.0.1 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect +) diff --git a/mocks/go.sum b/mocks/go.sum new file mode 100644 index 0000000..10fd076 --- /dev/null +++ b/mocks/go.sum @@ -0,0 +1,17 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/go-co-op/gocron/v2 v2.0.0-rc1 h1:qkj0WVO6uh6ibZa2CQ0Ifxk3A+c6rawZnIby94/5sAM= +github.com/go-co-op/gocron/v2 v2.0.0-rc1/go.mod h1:3SLoqKnyORFVN0VvFFb1383hM4WD9XHBPn9aUUp7sQs= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4= +github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo= +go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/mocks/job.go b/mocks/job.go new file mode 100644 index 0000000..61b06ad --- /dev/null +++ b/mocks/job.go @@ -0,0 +1,186 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: job.go +// +// Generated by this command: +// +// mockgen -source=job.go -destination=mocks/job.go -package=gocronmocks +// +// Package gocronmocks is a generated GoMock package. +package gocronmocks + +import ( + reflect "reflect" + time "time" + + uuid "github.com/google/uuid" + gomock "go.uber.org/mock/gomock" +) + +// MockJobDefinition is a mock of JobDefinition interface. +type MockJobDefinition struct { + ctrl *gomock.Controller + recorder *MockJobDefinitionMockRecorder +} + +// MockJobDefinitionMockRecorder is the mock recorder for MockJobDefinition. +type MockJobDefinitionMockRecorder struct { + mock *MockJobDefinition +} + +// NewMockJobDefinition creates a new mock instance. +func NewMockJobDefinition(ctrl *gomock.Controller) *MockJobDefinition { + mock := &MockJobDefinition{ctrl: ctrl} + mock.recorder = &MockJobDefinitionMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockJobDefinition) EXPECT() *MockJobDefinitionMockRecorder { + return m.recorder +} + +// setup mocks base method. +func (m *MockJobDefinition) setup(arg0 *internalJob, arg1 *time.Location) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "setup", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// setup indicates an expected call of setup. +func (mr *MockJobDefinitionMockRecorder) setup(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "setup", reflect.TypeOf((*MockJobDefinition)(nil).setup), arg0, arg1) +} + +// MockjobSchedule is a mock of jobSchedule interface. +type MockjobSchedule struct { + ctrl *gomock.Controller + recorder *MockjobScheduleMockRecorder +} + +// MockjobScheduleMockRecorder is the mock recorder for MockjobSchedule. +type MockjobScheduleMockRecorder struct { + mock *MockjobSchedule +} + +// NewMockjobSchedule creates a new mock instance. +func NewMockjobSchedule(ctrl *gomock.Controller) *MockjobSchedule { + mock := &MockjobSchedule{ctrl: ctrl} + mock.recorder = &MockjobScheduleMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockjobSchedule) EXPECT() *MockjobScheduleMockRecorder { + return m.recorder +} + +// next mocks base method. +func (m *MockjobSchedule) next(lastRun time.Time) time.Time { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "next", lastRun) + ret0, _ := ret[0].(time.Time) + return ret0 +} + +// next indicates an expected call of next. +func (mr *MockjobScheduleMockRecorder) next(lastRun any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "next", reflect.TypeOf((*MockjobSchedule)(nil).next), lastRun) +} + +// MockJob is a mock of Job interface. +type MockJob struct { + ctrl *gomock.Controller + recorder *MockJobMockRecorder +} + +// MockJobMockRecorder is the mock recorder for MockJob. +type MockJobMockRecorder struct { + mock *MockJob +} + +// NewMockJob creates a new mock instance. +func NewMockJob(ctrl *gomock.Controller) *MockJob { + mock := &MockJob{ctrl: ctrl} + mock.recorder = &MockJobMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockJob) EXPECT() *MockJobMockRecorder { + return m.recorder +} + +// ID mocks base method. +func (m *MockJob) ID() uuid.UUID { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ID") + ret0, _ := ret[0].(uuid.UUID) + return ret0 +} + +// ID indicates an expected call of ID. +func (mr *MockJobMockRecorder) ID() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ID", reflect.TypeOf((*MockJob)(nil).ID)) +} + +// LastRun mocks base method. +func (m *MockJob) LastRun() (time.Time, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "LastRun") + ret0, _ := ret[0].(time.Time) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// LastRun indicates an expected call of LastRun. +func (mr *MockJobMockRecorder) LastRun() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LastRun", reflect.TypeOf((*MockJob)(nil).LastRun)) +} + +// Name mocks base method. +func (m *MockJob) Name() string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Name") + ret0, _ := ret[0].(string) + return ret0 +} + +// Name indicates an expected call of Name. +func (mr *MockJobMockRecorder) Name() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockJob)(nil).Name)) +} + +// NextRun mocks base method. +func (m *MockJob) NextRun() (time.Time, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NextRun") + ret0, _ := ret[0].(time.Time) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// NextRun indicates an expected call of NextRun. +func (mr *MockJobMockRecorder) NextRun() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NextRun", reflect.TypeOf((*MockJob)(nil).NextRun)) +} + +// Tags mocks base method. +func (m *MockJob) Tags() []string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Tags") + ret0, _ := ret[0].([]string) + return ret0 +} + +// Tags indicates an expected call of Tags. +func (mr *MockJobMockRecorder) Tags() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Tags", reflect.TypeOf((*MockJob)(nil).Tags)) +} diff --git a/mocks/logger.go b/mocks/logger.go new file mode 100644 index 0000000..5b4789a --- /dev/null +++ b/mocks/logger.go @@ -0,0 +1,106 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: logger.go +// +// Generated by this command: +// +// mockgen -source=logger.go -destination=mocks/logger.go -package=gocronmocks +// +// Package gocronmocks is a generated GoMock package. +package gocronmocks + +import ( + reflect "reflect" + + gomock "go.uber.org/mock/gomock" +) + +// MockLogger is a mock of Logger interface. +type MockLogger struct { + ctrl *gomock.Controller + recorder *MockLoggerMockRecorder +} + +// MockLoggerMockRecorder is the mock recorder for MockLogger. +type MockLoggerMockRecorder struct { + mock *MockLogger +} + +// NewMockLogger creates a new mock instance. +func NewMockLogger(ctrl *gomock.Controller) *MockLogger { + mock := &MockLogger{ctrl: ctrl} + mock.recorder = &MockLoggerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockLogger) EXPECT() *MockLoggerMockRecorder { + return m.recorder +} + +// Debug mocks base method. +func (m *MockLogger) Debug(msg string, args ...any) { + m.ctrl.T.Helper() + varargs := []any{msg} + for _, a := range args { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Debug", varargs...) +} + +// Debug indicates an expected call of Debug. +func (mr *MockLoggerMockRecorder) Debug(msg any, args ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{msg}, args...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Debug", reflect.TypeOf((*MockLogger)(nil).Debug), varargs...) +} + +// Error mocks base method. +func (m *MockLogger) Error(msg string, args ...any) { + m.ctrl.T.Helper() + varargs := []any{msg} + for _, a := range args { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Error", varargs...) +} + +// Error indicates an expected call of Error. +func (mr *MockLoggerMockRecorder) Error(msg any, args ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{msg}, args...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Error", reflect.TypeOf((*MockLogger)(nil).Error), varargs...) +} + +// Info mocks base method. +func (m *MockLogger) Info(msg string, args ...any) { + m.ctrl.T.Helper() + varargs := []any{msg} + for _, a := range args { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Info", varargs...) +} + +// Info indicates an expected call of Info. +func (mr *MockLoggerMockRecorder) Info(msg any, args ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{msg}, args...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Info", reflect.TypeOf((*MockLogger)(nil).Info), varargs...) +} + +// Warn mocks base method. +func (m *MockLogger) Warn(msg string, args ...any) { + m.ctrl.T.Helper() + varargs := []any{msg} + for _, a := range args { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "Warn", varargs...) +} + +// Warn indicates an expected call of Warn. +func (mr *MockLoggerMockRecorder) Warn(msg any, args ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{msg}, args...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Warn", reflect.TypeOf((*MockLogger)(nil).Warn), varargs...) +} diff --git a/mocks/scheduler.go b/mocks/scheduler.go new file mode 100644 index 0000000..ff01aed --- /dev/null +++ b/mocks/scheduler.go @@ -0,0 +1,164 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: scheduler.go +// +// Generated by this command: +// +// mockgen -source=scheduler.go -destination=mocks/scheduler.go -package=gocronmocks +// +// Package gocronmocks is a generated GoMock package. +package gocronmocks + +import ( + reflect "reflect" + + v2 "github.com/go-co-op/gocron/v2" + uuid "github.com/google/uuid" + gomock "go.uber.org/mock/gomock" +) + +// MockScheduler is a mock of Scheduler interface. +type MockScheduler struct { + ctrl *gomock.Controller + recorder *MockSchedulerMockRecorder +} + +// MockSchedulerMockRecorder is the mock recorder for MockScheduler. +type MockSchedulerMockRecorder struct { + mock *MockScheduler +} + +// NewMockScheduler creates a new mock instance. +func NewMockScheduler(ctrl *gomock.Controller) *MockScheduler { + mock := &MockScheduler{ctrl: ctrl} + mock.recorder = &MockSchedulerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockScheduler) EXPECT() *MockSchedulerMockRecorder { + return m.recorder +} + +// Jobs mocks base method. +func (m *MockScheduler) Jobs() []v2.Job { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Jobs") + ret0, _ := ret[0].([]v2.Job) + return ret0 +} + +// Jobs indicates an expected call of Jobs. +func (mr *MockSchedulerMockRecorder) Jobs() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Jobs", reflect.TypeOf((*MockScheduler)(nil).Jobs)) +} + +// NewJob mocks base method. +func (m *MockScheduler) NewJob(arg0 v2.JobDefinition, arg1 v2.Task, arg2 ...v2.JobOption) (v2.Job, error) { + m.ctrl.T.Helper() + varargs := []any{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "NewJob", varargs...) + ret0, _ := ret[0].(v2.Job) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// NewJob indicates an expected call of NewJob. +func (mr *MockSchedulerMockRecorder) NewJob(arg0, arg1 any, arg2 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewJob", reflect.TypeOf((*MockScheduler)(nil).NewJob), varargs...) +} + +// RemoveByTags mocks base method. +func (m *MockScheduler) RemoveByTags(arg0 ...string) { + m.ctrl.T.Helper() + varargs := []any{} + for _, a := range arg0 { + varargs = append(varargs, a) + } + m.ctrl.Call(m, "RemoveByTags", varargs...) +} + +// RemoveByTags indicates an expected call of RemoveByTags. +func (mr *MockSchedulerMockRecorder) RemoveByTags(arg0 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveByTags", reflect.TypeOf((*MockScheduler)(nil).RemoveByTags), arg0...) +} + +// RemoveJob mocks base method. +func (m *MockScheduler) RemoveJob(arg0 uuid.UUID) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RemoveJob", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// RemoveJob indicates an expected call of RemoveJob. +func (mr *MockSchedulerMockRecorder) RemoveJob(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveJob", reflect.TypeOf((*MockScheduler)(nil).RemoveJob), arg0) +} + +// Shutdown mocks base method. +func (m *MockScheduler) Shutdown() error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Shutdown") + ret0, _ := ret[0].(error) + return ret0 +} + +// Shutdown indicates an expected call of Shutdown. +func (mr *MockSchedulerMockRecorder) Shutdown() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Shutdown", reflect.TypeOf((*MockScheduler)(nil).Shutdown)) +} + +// Start mocks base method. +func (m *MockScheduler) Start() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Start") +} + +// Start indicates an expected call of Start. +func (mr *MockSchedulerMockRecorder) Start() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockScheduler)(nil).Start)) +} + +// StopJobs mocks base method. +func (m *MockScheduler) StopJobs() error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "StopJobs") + ret0, _ := ret[0].(error) + return ret0 +} + +// StopJobs indicates an expected call of StopJobs. +func (mr *MockSchedulerMockRecorder) StopJobs() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StopJobs", reflect.TypeOf((*MockScheduler)(nil).StopJobs)) +} + +// Update mocks base method. +func (m *MockScheduler) Update(arg0 uuid.UUID, arg1 v2.JobDefinition, arg2 v2.Task, arg3 ...v2.JobOption) (v2.Job, error) { + m.ctrl.T.Helper() + varargs := []any{arg0, arg1, arg2} + for _, a := range arg3 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Update", varargs...) + ret0, _ := ret[0].(v2.Job) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Update indicates an expected call of Update. +func (mr *MockSchedulerMockRecorder) Update(arg0, arg1, arg2 any, arg3 ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{arg0, arg1, arg2}, arg3...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockScheduler)(nil).Update), varargs...) +} diff --git a/scheduler.go b/scheduler.go index 87a348f..8bac392 100644 --- a/scheduler.go +++ b/scheduler.go @@ -1,3 +1,4 @@ +//go:generate mockgen -source=scheduler.go -destination=mocks/scheduler.go -package=gocronmocks package gocron import (