Skip to content

Commit e104c02

Browse files
author
Dylan Lundy
committed
Add parameter for testMode.enter to continue processing jobs
1 parent 1bdf789 commit e104c02

File tree

3 files changed

+51
-5
lines changed

3 files changed

+51
-5
lines changed

Readme.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,15 @@ it('does something cool', function() {
891891
});
892892
```
893893

894+
**IMPORTANT:** By default jobs aren't processed when created during test mode. You can enable job processing by passing true to testMode.enter
895+
896+
```js
897+
before(function() {
898+
queue.testMode.enter(true);
899+
});
900+
```
901+
902+
894903
## Screencasts
895904

896905
- [Introduction](http://www.screenr.com/oyNs) to Kue

lib/queue/test_mode.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,26 @@ var Job = require('./job'),
33

44
var originalJobSave = Job.prototype.save,
55
originalJobUpdate = Job.prototype.update,
6+
processQueue,
67
jobs;
78

89
function testJobSave( fn ) {
9-
this.id = _.uniqueId();
10-
jobs.push(this);
11-
if( _.isFunction(fn) ) fn();
10+
if(processQueue) {
11+
jobs.push(this);
12+
originalJobSave.call(this, fn);
13+
} else {
14+
this.id = _.uniqueId();
15+
jobs.push(this);
16+
if( _.isFunction(fn) ) fn();
17+
}
1218
};
1319

1420
function testJobUpdate( fn ) {
15-
if( _.isFunction(fn) ) fn();
21+
if(processQueue) {
22+
originalJobUpdate.call(this, fn);
23+
} else {
24+
if( _.isFunction(fn) ) fn();
25+
}
1626
};
1727

1828
/**
@@ -21,13 +31,15 @@ function testJobUpdate( fn ) {
2131
*/
2232

2333
module.exports.jobs = jobs = [];
34+
module.exports.processQueue = processQueue = false;
2435

2536
/**
2637
* Enable test mode.
2738
* @api public
2839
*/
2940

30-
module.exports.enter = function() {
41+
module.exports.enter = function(process) {
42+
processQueue = process || false;
3143
Job.prototype.save = testJobSave;
3244
Job.prototype.update = testJobUpdate;
3345
};

test/test_mode.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,31 @@ describe('Test Mode', function() {
2323
expect(job.data).to.eql({ foo: 'bar' });
2424
});
2525

26+
it('adds jobs to an array in memory and processes them when processQueue is true', function(done) {
27+
queue.testMode.exit();
28+
queue.testMode.enter(true);
29+
30+
queue.createJob('test-testMode-process', { foo: 'bar' }).save();
31+
32+
var jobs = queue.testMode.jobs;
33+
expect(jobs.length).to.equal(1);
34+
35+
var job = _.last(jobs);
36+
expect(job.type).to.equal('test-testMode-process');
37+
expect(job.data).to.eql({ foo: 'bar' });
38+
39+
job.on('complete', function() {
40+
queue.testMode.exit();
41+
queue.testMode.enter();
42+
done();
43+
});
44+
45+
queue.process('test-testMode-process', function(job, jdone) {
46+
job.data.should.be.eql({ foo: 'bar' });
47+
48+
jdone();
49+
});
50+
});
2651

2752
describe('#clear', function() {
2853
it('resets the list of jobs', function() {

0 commit comments

Comments
 (0)