From 72e3d373d6273f557adb80b8cc9bd13f3b0c0d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?rogger=20andr=C3=A9=20valverde=20flores?= Date: Thu, 8 Dec 2022 11:35:42 -0500 Subject: [PATCH] feat(worker): add ready event --- src/classes/worker.ts | 10 +++++++++- tests/test_getters.ts | 26 ++++++++++++++++++++------ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/classes/worker.ts b/src/classes/worker.ts index 74d809d325..561d7b6d7c 100644 --- a/src/classes/worker.ts +++ b/src/classes/worker.ts @@ -113,6 +113,13 @@ export interface WorkerListener< progress: number | object, ) => void; + /** + * Listen to 'ready' event. + * + * This event is triggered when blockingConnection is ready. + */ + ready: () => void; + /** * Listen to 'resumed' event. * @@ -167,7 +174,7 @@ export class Worker< string >; - static RateLimitError() { + static RateLimitError(): Error { return new Error(RATE_LIMIT_ERROR); } @@ -223,6 +230,7 @@ export class Worker< this.emit('error', error); } } + this.emit('ready'); }); if (processor) { diff --git a/tests/test_getters.ts b/tests/test_getters.ts index 7e29680ab7..cde6801dd1 100644 --- a/tests/test_getters.ts +++ b/tests/test_getters.ts @@ -48,15 +48,21 @@ describe('Jobs getters', function () { describe('.getWorkers', () => { it('gets all workers for this queue only', async function () { const worker = new Worker(queueName, async () => {}, { connection }); - await worker.waitUntilReady(); - await delay(10); + await new Promise(resolve => { + worker.on('ready', () => { + resolve(); + }); + }); const workers = await queue.getWorkers(); expect(workers).to.have.length(1); const worker2 = new Worker(queueName, async () => {}, { connection }); - await worker2.waitUntilReady(); - await delay(10); + await new Promise(resolve => { + worker2.on('ready', () => { + resolve(); + }); + }); const nextWorkers = await queue.getWorkers(); expect(nextWorkers).to.have.length(2); @@ -69,9 +75,17 @@ describe('Jobs getters', function () { const queueName2 = `${queueName}2`; const queue2 = new Queue(queueName2, { connection }); const worker = new Worker(queueName, async () => {}, { connection }); + await new Promise(resolve => { + worker.on('ready', () => { + resolve(); + }); + }); const worker2 = new Worker(queueName2, async () => {}, { connection }); - await worker.waitUntilReady(); - await worker2.waitUntilReady(); + await new Promise(resolve => { + worker2.on('ready', () => { + resolve(); + }); + }); const workers = await queue.getWorkers(); expect(workers).to.have.length(1);