From 057bd26b74c781126c94f57f38830b2af47c576e Mon Sep 17 00:00:00 2001 From: Joe Fleming Date: Fri, 8 Jul 2016 17:14:07 -0700 Subject: [PATCH] emit on worker completion with test --- src/helpers/constants.js | 1 + src/worker.js | 1 + test/src/worker.js | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/src/helpers/constants.js b/src/helpers/constants.js index a20f485..8dc7117 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -17,6 +17,7 @@ export const events = { EVENT_JOB_CREATED: 'job:created', EVENT_JOB_ERROR: 'job:error', EVENT_WORKER_ERROR: 'worker:error', + EVENT_WORKER_COMPLETE: 'worker:job complete', EVENT_WORKER_JOB_CLAIM_ERROR: 'worker:claim job error', EVENT_WORKER_JOB_SEARCH_ERROR: 'worker:pending jobs error', EVENT_WORKER_JOB_UPDATE_ERROR: 'worker:update job error', diff --git a/src/worker.js b/src/worker.js index d546275..3f7376f 100644 --- a/src/worker.js +++ b/src/worker.js @@ -195,6 +195,7 @@ export default class Job extends events.EventEmitter { version: job._version, body: { doc } }) + .then(() => this.emit(constants.EVENT_WORKER_COMPLETE, Object.assign(emitJob, { output: docOutput }))) .catch((err) => { if (err.statusCode === 409) return false; this.debug(`Failure saving job output ${job._id}`, err); diff --git a/test/src/worker.js b/test/src/worker.js index d3e3596..2bee0ec 100644 --- a/test/src/worker.js +++ b/test/src/worker.js @@ -564,6 +564,27 @@ describe('Worker class', function () { expect(completedTimestamp).to.be.greaterThan(startTime); }); }); + + it('should emit completion event', function (done) { + const worker = new Worker(mockQueue, 'test', noop); + + worker.once(constants.EVENT_WORKER_COMPLETE, (workerJob) => { + try { + expect(workerJob).to.have.property('id'); + expect(workerJob).to.have.property('index'); + expect(workerJob).to.have.property('type'); + expect(workerJob).to.have.property('output'); + expect(workerJob.output).to.have.property('content'); + expect(workerJob.output).to.have.property('content_type'); + expect(workerJob).to.not.have.property('_source'); + done(); + } catch (e) { + done(e); + } + }); + + worker._performJob(job); + }); }); describe('worker failure', function () {