| 250 | } |
| 251 | |
| 252 | func completerResultToWorkResult(tb testing.TB, completerResult jobcompleter.CompleterJobUpdated) *WorkResult { |
| 253 | tb.Helper() |
| 254 | |
| 255 | var kind river.EventKind |
| 256 | if completerResult.Snoozed { |
| 257 | kind = river.EventKindJobSnoozed |
| 258 | } else { |
| 259 | switch completerResult.Job.State { |
| 260 | case rivertype.JobStateCancelled: |
| 261 | kind = river.EventKindJobCancelled |
| 262 | case rivertype.JobStateCompleted: |
| 263 | kind = river.EventKindJobCompleted |
| 264 | case rivertype.JobStateScheduled: |
| 265 | kind = river.EventKindJobSnoozed |
| 266 | case rivertype.JobStateAvailable, rivertype.JobStateDiscarded, rivertype.JobStateRetryable, rivertype.JobStateRunning: |
| 267 | kind = river.EventKindJobFailed |
| 268 | case rivertype.JobStatePending: |
| 269 | panic("test worker internal error: completion subscriber unexpectedly received job in pending state, river bug") |
| 270 | default: |
| 271 | // linter exhaustive rule prevents this from being reached |
| 272 | panic("test worker internal error: unreachable state to distribute, river bug") |
| 273 | } |
| 274 | } |
| 275 | |
| 276 | return &WorkResult{ |
| 277 | EventKind: kind, |
| 278 | Job: completerResult.Job, |
| 279 | } |
| 280 | } |
| 281 | |
| 282 | type PanicError struct { |
| 283 | Cause any |