testutil

package
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 6, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MustMarshal

func MustMarshal(v interface{}) json.RawMessage

MustMarshal marshals to JSON or panics.

func NewDelayedJob

func NewDelayedJob(delay time.Duration) *job.Job

NewDelayedJob creates a job scheduled for future execution.

func NewEmailJob

func NewEmailJob(to, subject string) *job.Job

NewEmailJob creates a test email job.

func NewFailingJob

func NewFailingJob() *job.Job

NewFailingJob creates a job that should fail (no retries).

func NewHighPriorityJob

func NewHighPriorityJob() *job.Job

NewHighPriorityJob creates a high priority test job.

func NewJobWithPayload

func NewJobWithPayload(jobType string, payload interface{}) *job.Job

NewJobWithPayload creates a job with a custom payload.

func NewJobWithRetries

func NewJobWithRetries(maxRetries int) *job.Job

NewJobWithRetries creates a job with a specific max retries.

func NewJobWithTimeout

func NewJobWithTimeout(timeout time.Duration) *job.Job

NewJobWithTimeout creates a job with a specific timeout.

func NewLowPriorityJob

func NewLowPriorityJob() *job.Job

NewLowPriorityJob creates a low priority test job.

func NewRandomTestJob

func NewRandomTestJob(opts ...job.Option) *job.Job

NewRandomTestJob creates a test job with a random ID.

func NewTestJob

func NewTestJob(opts ...job.Option) *job.Job

NewTestJob creates a test job with default values.

func NewTestJobWithID

func NewTestJobWithID(id string, opts ...job.Option) *job.Job

NewTestJobWithID creates a test job with a specific ID.

Types

type EmailPayload

type EmailPayload struct {
	To      string `json:"to"`
	Subject string `json:"subject"`
	Body    string `json:"body"`
}

EmailPayload represents an email job payload.

type ImageResizePayload

type ImageResizePayload struct {
	ImageURL string `json:"image_url"`
	Width    int    `json:"width"`
	Height   int    `json:"height"`
	Format   string `json:"format"`
}

ImageResizePayload represents an image resize job payload.

type JobAssertions

type JobAssertions struct {
	Job *job.Job
}

JobAssertions provides test assertions for jobs.

func Assert

func Assert(j *job.Job) *JobAssertions

Assert creates a new JobAssertions for the given job.

func (*JobAssertions) HasRetryCount

func (a *JobAssertions) HasRetryCount(expected int) bool

HasRetryCount checks the retry count.

func (*JobAssertions) HasState

func (a *JobAssertions) HasState(expected job.State) bool

HasState checks if the job has the expected state.

func (*JobAssertions) IsCompleted

func (a *JobAssertions) IsCompleted() bool

IsCompleted checks if the job is completed.

func (*JobAssertions) IsDead

func (a *JobAssertions) IsDead() bool

IsDead checks if the job is dead (in DLQ).

func (*JobAssertions) IsFailed

func (a *JobAssertions) IsFailed() bool

IsFailed checks if the job is failed.

type MockBroker

type MockBroker struct {

	// Function overrides for custom behavior
	EnqueueFunc            func(ctx context.Context, j *job.Job) error
	DequeueFunc            func(ctx context.Context, queues []string, timeout time.Duration) (*job.Job, error)
	AckFunc                func(ctx context.Context, j *job.Job) error
	NackFunc               func(ctx context.Context, j *job.Job, err error) error
	ScheduleFunc           func(ctx context.Context, j *job.Job, at time.Time) error
	GetJobFunc             func(ctx context.Context, jobID string) (*job.Job, error)
	DeleteJobFunc          func(ctx context.Context, jobID string) error
	GetQueueDepthFunc      func(ctx context.Context, queue string) (int64, error)
	GetDelayedJobsFunc     func(ctx context.Context, until time.Time, limit int64) ([]*job.Job, error)
	MoveDelayedToQueueFunc func(ctx context.Context, j *job.Job) error
	GetPendingJobsFunc     func(ctx context.Context, queue string, idleTime time.Duration) ([]*job.Job, error)
	RequeueStaleJobFunc    func(ctx context.Context, j *job.Job) error
	PingFunc               func(ctx context.Context) error
	CloseFunc              func() error
	// contains filtered or unexported fields
}

MockBroker is a test double for the Broker interface.

func NewMockBroker

func NewMockBroker() *MockBroker

NewMockBroker creates a new MockBroker with default behavior.

func (*MockBroker) Ack

func (m *MockBroker) Ack(ctx context.Context, j *job.Job) error

Ack marks a job as successfully processed.

func (*MockBroker) Close

func (m *MockBroker) Close() error

Close closes the broker.

func (*MockBroker) DelayedJobs

func (m *MockBroker) DelayedJobs() []*job.Job

DelayedJobs returns all delayed jobs.

func (*MockBroker) DeleteJob

func (m *MockBroker) DeleteJob(ctx context.Context, jobID string) error

DeleteJob removes a job.

func (*MockBroker) Dequeue

func (m *MockBroker) Dequeue(ctx context.Context, queues []string, timeout time.Duration) (*job.Job, error)

Dequeue returns the next job from the mock queue.

func (*MockBroker) Enqueue

func (m *MockBroker) Enqueue(ctx context.Context, j *job.Job) error

Enqueue adds a job to the mock queue.

func (*MockBroker) FailedJobs

func (m *MockBroker) FailedJobs() []*job.Job

FailedJobs returns all failed jobs.

func (*MockBroker) GetDelayedJobs

func (m *MockBroker) GetDelayedJobs(ctx context.Context, until time.Time, limit int64) ([]*job.Job, error)

GetDelayedJobs returns delayed jobs ready for processing.

func (*MockBroker) GetJob

func (m *MockBroker) GetJob(ctx context.Context, jobID string) (*job.Job, error)

GetJob retrieves a job by ID.

func (*MockBroker) GetPendingJobs

func (m *MockBroker) GetPendingJobs(ctx context.Context, queue string, idleTime time.Duration) ([]*job.Job, error)

GetPendingJobs returns jobs that are being processed.

func (*MockBroker) GetQueueDepth

func (m *MockBroker) GetQueueDepth(ctx context.Context, queue string) (int64, error)

GetQueueDepth returns the number of queued jobs.

func (*MockBroker) MoveDelayedToQueue

func (m *MockBroker) MoveDelayedToQueue(ctx context.Context, j *job.Job) error

MoveDelayedToQueue moves a delayed job to the queue.

func (*MockBroker) Nack

func (m *MockBroker) Nack(ctx context.Context, j *job.Job, err error) error

Nack marks a job as failed.

func (*MockBroker) Ping

func (m *MockBroker) Ping(ctx context.Context) error

Ping checks the connection.

func (*MockBroker) ProcessedJobs

func (m *MockBroker) ProcessedJobs() []*job.Job

ProcessedJobs returns all successfully processed jobs.

func (*MockBroker) QueuedJobs

func (m *MockBroker) QueuedJobs() []*job.Job

QueuedJobs returns all queued jobs.

func (*MockBroker) RequeueStaleJob

func (m *MockBroker) RequeueStaleJob(ctx context.Context, j *job.Job) error

RequeueStaleJob requeues a stale job.

func (*MockBroker) Reset

func (m *MockBroker) Reset()

Reset clears all state.

func (*MockBroker) Schedule

func (m *MockBroker) Schedule(ctx context.Context, j *job.Job, at time.Time) error

Schedule adds a job for delayed execution.

type MockDLQRepository added in v0.5.0

type MockDLQRepository struct {
	ListFunc         func(ctx context.Context, filter repository.DLQFilter) ([]*repository.DeadLetterJob, error)
	GetByIDFunc      func(ctx context.Context, id string) (*repository.DeadLetterJob, error)
	MarkRequeuedFunc func(ctx context.Context, id string) error
	DeleteFunc       func(ctx context.Context, id string) error
	CountFunc        func(ctx context.Context) (int64, error)
	// contains filtered or unexported fields
}

MockDLQRepository is a test double for DLQRepository.

func NewMockDLQRepository added in v0.5.0

func NewMockDLQRepository() *MockDLQRepository

func (*MockDLQRepository) Add added in v0.5.0

func (m *MockDLQRepository) Add(ctx context.Context, j *job.Job, errMsg string) error

func (*MockDLQRepository) AddJob added in v0.5.0

func (m *MockDLQRepository) AddJob(dlj *repository.DeadLetterJob)

func (*MockDLQRepository) Count added in v0.5.0

func (m *MockDLQRepository) Count(ctx context.Context) (int64, error)

func (*MockDLQRepository) Delete added in v0.5.0

func (m *MockDLQRepository) Delete(ctx context.Context, id string) error

func (*MockDLQRepository) GetByID added in v0.5.0

func (*MockDLQRepository) List added in v0.5.0

func (*MockDLQRepository) MarkRequeued added in v0.5.0

func (m *MockDLQRepository) MarkRequeued(ctx context.Context, id string) error

type MockExecutionRepository added in v0.5.0

type MockExecutionRepository struct {
	ListFunc       func(ctx context.Context, filter repository.ExecutionFilter) ([]*repository.JobExecution, error)
	GetByJobIDFunc func(ctx context.Context, jobID string) ([]*repository.JobExecution, error)
	GetStatsFunc   func(ctx context.Context, fromDate, toDate time.Time) (*repository.ExecutionStats, error)
	// contains filtered or unexported fields
}

MockExecutionRepository is a test double for ExecutionRepository.

func NewMockExecutionRepository added in v0.5.0

func NewMockExecutionRepository() *MockExecutionRepository

func (*MockExecutionRepository) AddExecution added in v0.5.0

func (m *MockExecutionRepository) AddExecution(exec *repository.JobExecution)

func (*MockExecutionRepository) Create added in v0.5.0

func (*MockExecutionRepository) GetByJobID added in v0.5.0

func (m *MockExecutionRepository) GetByJobID(ctx context.Context, jobID string) ([]*repository.JobExecution, error)

func (*MockExecutionRepository) GetStats added in v0.5.0

func (m *MockExecutionRepository) GetStats(ctx context.Context, fromDate, toDate time.Time) (*repository.ExecutionStats, error)

func (*MockExecutionRepository) List added in v0.5.0

func (*MockExecutionRepository) RecordExecution added in v0.5.0

func (m *MockExecutionRepository) RecordExecution(ctx context.Context, j *job.Job, workerID string, execErr error) error

type MockScheduleRepository added in v0.5.0

type MockScheduleRepository struct {
	ListActiveFunc    func(ctx context.Context) ([]*repository.JobSchedule, error)
	ListDueFunc       func(ctx context.Context, until time.Time) ([]*repository.JobSchedule, error)
	UpdateNextRunFunc func(ctx context.Context, id string, nextRunAt time.Time) error
	RecordRunFunc     func(ctx context.Context, id string, status string, nextRunAt time.Time) error
	// contains filtered or unexported fields
}

MockScheduleRepository is a test double for ScheduleRepository.

func NewMockScheduleRepository added in v0.5.0

func NewMockScheduleRepository() *MockScheduleRepository

func (*MockScheduleRepository) AddSchedule added in v0.5.0

func (m *MockScheduleRepository) AddSchedule(s *repository.JobSchedule)

func (*MockScheduleRepository) Create added in v0.5.0

func (*MockScheduleRepository) Delete added in v0.5.0

func (m *MockScheduleRepository) Delete(ctx context.Context, id string) error

func (*MockScheduleRepository) GetByID added in v0.5.0

func (*MockScheduleRepository) ListActive added in v0.5.0

func (*MockScheduleRepository) ListDue added in v0.5.0

func (*MockScheduleRepository) RecordRun added in v0.5.0

func (m *MockScheduleRepository) RecordRun(ctx context.Context, id string, status string, nextRunAt time.Time) error

func (*MockScheduleRepository) SetActive added in v0.5.0

func (m *MockScheduleRepository) SetActive(ctx context.Context, id string, active bool) error

func (*MockScheduleRepository) UpdateNextRun added in v0.5.0

func (m *MockScheduleRepository) UpdateNextRun(ctx context.Context, id string, nextRunAt time.Time) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL