@@ -214,4 +214,65 @@ describe("RunQueue.nackMessage", () => {
214
214
}
215
215
}
216
216
) ;
217
+
218
+ redisTest (
219
+ "nacking a message with retryAt sets the correct requeue time" ,
220
+ async ( { redisContainer } ) => {
221
+ const queue = new RunQueue ( {
222
+ ...testOptions ,
223
+ queueSelectionStrategy : new FairQueueSelectionStrategy ( {
224
+ redis : {
225
+ keyPrefix : "runqueue:test:" ,
226
+ host : redisContainer . getHost ( ) ,
227
+ port : redisContainer . getPort ( ) ,
228
+ } ,
229
+ keys : testOptions . keys ,
230
+ } ) ,
231
+ redis : {
232
+ keyPrefix : "runqueue:test:" ,
233
+ host : redisContainer . getHost ( ) ,
234
+ port : redisContainer . getPort ( ) ,
235
+ } ,
236
+ } ) ;
237
+
238
+ try {
239
+ const envMasterQueue = `env:${ authenticatedEnvDev . id } ` ;
240
+
241
+ // Enqueue message
242
+ await queue . enqueueMessage ( {
243
+ env : authenticatedEnvDev ,
244
+ message : messageDev ,
245
+ masterQueues : [ "main" , envMasterQueue ] ,
246
+ } ) ;
247
+
248
+ // Dequeue message
249
+ const dequeued = await queue . dequeueMessageFromMasterQueue (
250
+ "test_12345" ,
251
+ envMasterQueue ,
252
+ 10
253
+ ) ;
254
+ expect ( dequeued . length ) . toBe ( 1 ) ;
255
+
256
+ // Set retryAt to 5 seconds in the future
257
+ const retryAt = Date . now ( ) + 5000 ;
258
+ await queue . nackMessage ( {
259
+ orgId : messageDev . orgId ,
260
+ messageId : messageDev . runId ,
261
+ retryAt,
262
+ } ) ;
263
+
264
+ // Check the score of the message in the queue
265
+ const queueKey = queue . keys . queueKey ( authenticatedEnvDev , messageDev . queue ) ;
266
+ const score = await queue . oldestMessageInQueue ( authenticatedEnvDev , messageDev . queue ) ;
267
+ expect ( typeof score ) . toBe ( "number" ) ;
268
+ if ( typeof score !== "number" ) {
269
+ throw new Error ( "Expected score to be a number, but got undefined" ) ;
270
+ }
271
+ // Should be within 100ms of retryAt
272
+ expect ( Math . abs ( score - retryAt ) ) . toBeLessThanOrEqual ( 100 ) ;
273
+ } finally {
274
+ await queue . quit ( ) ;
275
+ }
276
+ }
277
+ ) ;
217
278
} ) ;
0 commit comments