diff --git a/src/worker.js b/src/worker.js index 7383b62..4babcbc 100644 --- a/src/worker.js +++ b/src/worker.js @@ -132,7 +132,10 @@ export default class Job extends events.EventEmitter { throw err; }); }, (err) => { + const completedTime = moment().toISOString(); const doc = { + status: jobStatuses.JOB_STATUS_FAILED, + completed_at: completedTime, output: { content_type: false, content: err.toString() diff --git a/test/src/worker.js b/test/src/worker.js index 447857e..c0ae8cb 100644 --- a/test/src/worker.js +++ b/test/src/worker.js @@ -336,6 +336,30 @@ describe('Worker class', function () { } }); }); + + it('should set status to failed', function (done) { + const startTime = moment().valueOf(); + const workerFn = function (jobPayload, cb) { + expect(jobPayload).to.eql(payload); + cb(null, payload); + }; + const worker = new Worker(mockQueue, 'test', workerFn); + + worker._performJob(job) + .then(() => { + try { + sinon.assert.calledOnce(updateSpy); + const doc = updateSpy.firstCall.args[0].body.doc; + expect(doc).to.have.property('status', JOB_STATUS_FAILED); + expect(doc).to.have.property('completed_at'); + const completedTimestamp = moment(doc.completed_at).valueOf(); + expect(completedTimestamp).to.be.greaterThan(startTime); + done(); + } catch (err) { + done(err); + } + }); + }); }); });