add fail job tests
This commit is contained in:
@@ -4,7 +4,7 @@ import moment from 'moment';
|
|||||||
import { noop } from 'lodash';
|
import { noop } from 'lodash';
|
||||||
import Worker from '../../lib/worker';
|
import Worker from '../../lib/worker';
|
||||||
import elasticsearchMock from '../fixtures/elasticsearch';
|
import elasticsearchMock from '../fixtures/elasticsearch';
|
||||||
import { JOB_STATUS_PROCESSING } from '../../lib/helpers/constants';
|
import { JOB_STATUS_PROCESSING, JOB_STATUS_FAILED } from '../../lib/helpers/constants';
|
||||||
|
|
||||||
const anchor = '2016-04-02T01:02:03.456'; // saturday
|
const anchor = '2016-04-02T01:02:03.456'; // saturday
|
||||||
const defaults = {
|
const defaults = {
|
||||||
@@ -147,6 +147,67 @@ describe('Worker class', function () {
|
|||||||
const expiration = anchorMoment.add(defaults.timeout).toISOString();
|
const expiration = anchorMoment.add(defaults.timeout).toISOString();
|
||||||
expect(doc).to.have.property('process_expiration', expiration);
|
expect(doc).to.have.property('process_expiration', expiration);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should fail job if max_attempts are hit', function () {
|
||||||
|
const failSpy = sinon.spy(worker, '_failJob');
|
||||||
|
job._source.attempts = job._source.max_attempts;
|
||||||
|
worker._claimJob(job);
|
||||||
|
sinon.assert.calledOnce(failSpy);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should append error message if no existing content', function () {
|
||||||
|
const failSpy = sinon.spy(worker, '_failJob');
|
||||||
|
job._source.attempts = job._source.max_attempts;
|
||||||
|
expect(job._source.output).to.be(undefined);
|
||||||
|
worker._claimJob(job);
|
||||||
|
const msg = failSpy.firstCall.args[1];
|
||||||
|
expect(msg).to.contain('Max attempts reached');
|
||||||
|
expect(msg).to.contain(job._source.max_attempts);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not append message if existing output', function () {
|
||||||
|
const failSpy = sinon.spy(worker, '_failJob');
|
||||||
|
job._source.attempts = job._source.max_attempts;
|
||||||
|
job._source.output = 'i have some output';
|
||||||
|
worker._claimJob(job);
|
||||||
|
const msg = failSpy.firstCall.args[1];
|
||||||
|
expect(msg).to.equal(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('failing a job', function () {
|
||||||
|
let job;
|
||||||
|
let worker;
|
||||||
|
let updateSpy;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
job = mockQueue.client.get();
|
||||||
|
worker = new Worker(mockQueue, 'test', noop);
|
||||||
|
updateSpy = sinon.spy(mockQueue.client, 'update');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should use version on update', function () {
|
||||||
|
worker._failJob(job);
|
||||||
|
const query = updateSpy.firstCall.args[0];
|
||||||
|
expect(query).to.have.property('index', job._index);
|
||||||
|
expect(query).to.have.property('type', job._type);
|
||||||
|
expect(query).to.have.property('id', job._id);
|
||||||
|
expect(query).to.have.property('version', job._version);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should set status to failed', function () {
|
||||||
|
worker._failJob(job);
|
||||||
|
const doc = updateSpy.firstCall.args[0].body.doc;
|
||||||
|
expect(doc).to.have.property('status', JOB_STATUS_FAILED);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should append error message if supplied', function () {
|
||||||
|
const msg = 'test message';
|
||||||
|
worker._failJob(job, msg);
|
||||||
|
const doc = updateSpy.firstCall.args[0].body.doc;
|
||||||
|
expect(doc).to.have.property('output');
|
||||||
|
expect(doc.output).to.have.property('content', msg);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user