(t *testing.T)
| 5189 | } |
| 5190 | |
| 5191 | func Test_Client_JobRetry(t *testing.T) { |
| 5192 | t.Parallel() |
| 5193 | |
| 5194 | ctx := context.Background() |
| 5195 | |
| 5196 | type testBundle struct { |
| 5197 | dbPool *pgxpool.Pool |
| 5198 | } |
| 5199 | |
| 5200 | setup := func(t *testing.T) (*Client[pgx.Tx], *testBundle) { |
| 5201 | t.Helper() |
| 5202 | |
| 5203 | var ( |
| 5204 | dbPool = riversharedtest.DBPool(ctx, t) |
| 5205 | driver = riverpgxv5.New(dbPool) |
| 5206 | schema = riverdbtest.TestSchema(ctx, t, driver, nil) |
| 5207 | config = newTestConfig(t, schema) |
| 5208 | client = newTestClient(t, dbPool, config) |
| 5209 | ) |
| 5210 | |
| 5211 | return client, &testBundle{dbPool: dbPool} |
| 5212 | } |
| 5213 | |
| 5214 | t.Run("UpdatesAJobScheduledInTheFutureToBeImmediatelyAvailable", func(t *testing.T) { |
| 5215 | t.Parallel() |
| 5216 | |
| 5217 | client, _ := setup(t) |
| 5218 | |
| 5219 | insertRes, err := client.Insert(ctx, noOpArgs{}, &InsertOpts{ScheduledAt: time.Now().Add(time.Hour)}) |
| 5220 | require.NoError(t, err) |
| 5221 | require.Equal(t, rivertype.JobStateScheduled, insertRes.Job.State) |
| 5222 | |
| 5223 | job, err := client.JobRetry(ctx, insertRes.Job.ID) |
| 5224 | require.NoError(t, err) |
| 5225 | require.NotNil(t, job) |
| 5226 | |
| 5227 | require.Equal(t, rivertype.JobStateAvailable, job.State) |
| 5228 | require.WithinDuration(t, time.Now().UTC(), job.ScheduledAt, 5*time.Second) |
| 5229 | }) |
| 5230 | |
| 5231 | t.Run("TxVariantAlsoUpdatesJobToAvailable", func(t *testing.T) { |
| 5232 | t.Parallel() |
| 5233 | |
| 5234 | client, bundle := setup(t) |
| 5235 | |
| 5236 | insertRes, err := client.Insert(ctx, noOpArgs{}, &InsertOpts{ScheduledAt: time.Now().Add(time.Hour)}) |
| 5237 | require.NoError(t, err) |
| 5238 | require.Equal(t, rivertype.JobStateScheduled, insertRes.Job.State) |
| 5239 | |
| 5240 | var jobAfter *rivertype.JobRow |
| 5241 | |
| 5242 | err = pgx.BeginFunc(ctx, bundle.dbPool, func(tx pgx.Tx) error { |
| 5243 | var err error |
| 5244 | jobAfter, err = client.JobRetryTx(ctx, tx, insertRes.Job.ID) |
| 5245 | return err |
| 5246 | }) |
| 5247 | require.NoError(t, err) |
| 5248 | require.NotNil(t, jobAfter) |
nothing calls this directly
no test coverage detected
searching dependent graphs…