Skip to content

Commit

Permalink
add client-level test coverage for PeriodicJobConstructor nil return
Browse files Browse the repository at this point in the history
  • Loading branch information
bgentry committed Aug 30, 2024
1 parent 2c40fed commit 5dc0004
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 3 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

```go
# before
migrator := rivermigrate.New(riverpgxv5.New(dbPool), nil)
migrator := rivermigrate.New(riverpgxv5.New(dbPool), nil)

# after
migrator, err := rivermigrate.New(riverpgxv5.New(dbPool), nil)
migrator, err := rivermigrate.New(riverpgxv5.New(dbPool), nil)
if err != nil {
// handle error
}
Expand All @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Fixed

- Fixed a panic that'd occur if `StopAndCancel` was invoked before a client was started. [PR #557](https://github.com/riverqueue/river/pull/557).
- A `PeriodicJobConstructor` should be able to return `nil` `JobArgs` if it wishes to not have any job inserted. However, this was either never working or was broken at some point. It's now fixed. Thanks [@semanser](https://github.com/semanser)! [PR #567](https://github.com/riverqueue/river/pull/567).

## [0.11.4] - 2024-08-20

Expand Down
27 changes: 27 additions & 0 deletions client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2727,6 +2727,33 @@ func Test_Client_Maintenance(t *testing.T) {
require.Empty(t, jobs)
})

t.Run("PeriodicJobConstructorReturningNil", func(t *testing.T) {
t.Parallel()

config := newTestConfig(t, nil)

worker := &periodicJobWorker{}
AddWorker(config.Workers, worker)
config.PeriodicJobs = []*PeriodicJob{
NewPeriodicJob(cron.Every(15*time.Minute), func() (JobArgs, *InsertOpts) {
// Returning nil from the constructor function should not insert a new
// job and should be handled cleanly
return nil, nil
}, &PeriodicJobOpts{RunOnStart: true}),
}

client, bundle := setup(t, config)

startAndWaitForQueueMaintainer(ctx, t, client)

svc := maintenance.GetService[*maintenance.PeriodicJobEnqueuer](client.queueMaintainer)
svc.TestSignals.SkippedJob.WaitOrTimeout()

jobs, err := bundle.exec.JobGetByKindMany(ctx, []string{(periodicJobArgs{}).Kind()})
require.NoError(t, err)
require.Len(t, jobs, 0, "Expected to find zero jobs of kind: "+(periodicJobArgs{}).Kind())

Check failure on line 2754 in client_test.go

View workflow job for this annotation

GitHub Actions / lint

empty: use require.Empty (testifylint)
})

t.Run("PeriodicJobEnqueuerAddDynamically", func(t *testing.T) {
t.Parallel()

Expand Down
2 changes: 1 addition & 1 deletion periodic_job_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func TestPeriodicJobBundle(t *testing.T) {

type testBundle struct{}

setup := func(t *testing.T) (*PeriodicJobBundle, *testBundle) {
setup := func(t *testing.T) (*PeriodicJobBundle, *testBundle) { //nolint:unparam
t.Helper()

periodicJobEnqueuer := maintenance.NewPeriodicJobEnqueuer(
Expand Down

0 comments on commit 5dc0004

Please sign in to comment.