first commit
This commit is contained in:
39
test/unit/batch/job_publisher.js
Normal file
39
test/unit/batch/job_publisher.js
Normal file
@@ -0,0 +1,39 @@
|
||||
'use strict';
|
||||
|
||||
var Channel = require('../../../batch/pubsub/channel');
|
||||
var JobPublisher = require('../../../batch/pubsub/job-publisher');
|
||||
var assert = require('assert');
|
||||
|
||||
describe('batch API job publisher', function () {
|
||||
beforeEach(function () {
|
||||
var self = this;
|
||||
this.host = 'irrelevantHost';
|
||||
this.redis = {
|
||||
createClient: function () {
|
||||
return this;
|
||||
},
|
||||
publish: function () {
|
||||
var isValidFirstArg = arguments[0] === Channel.NAME;
|
||||
var isValidSecondArg = arguments[1] === self.host;
|
||||
self.redis.publishIsCalledWithValidArgs = isValidFirstArg && isValidSecondArg;
|
||||
},
|
||||
on: function () {},
|
||||
ping: function (cb) {
|
||||
cb();
|
||||
}
|
||||
};
|
||||
this.pool = {
|
||||
acquire: function (db, cb) {
|
||||
cb(null, self.redis);
|
||||
}
|
||||
};
|
||||
|
||||
this.jobPublisher = new JobPublisher(this.pool);
|
||||
});
|
||||
|
||||
it('.publish() should publish new messages', function () {
|
||||
this.jobPublisher.publish(this.host);
|
||||
assert.ok(this.redis.publishIsCalledWithValidArgs);
|
||||
});
|
||||
|
||||
});
|
||||
49
test/unit/batch/job_queue.js
Normal file
49
test/unit/batch/job_queue.js
Normal file
@@ -0,0 +1,49 @@
|
||||
'use strict';
|
||||
|
||||
var JobQueue = require('../../../batch/job_queue');
|
||||
var assert = require('assert');
|
||||
|
||||
describe('batch API job queue', function () {
|
||||
beforeEach(function () {
|
||||
this.metadataBackend = {
|
||||
redisCmd: function () {
|
||||
var callback = arguments[arguments.length -1];
|
||||
process.nextTick(function () {
|
||||
callback(null, 'irrelevantJob');
|
||||
});
|
||||
},
|
||||
redisMultiCmd: function () {
|
||||
var callback = arguments[arguments.length -1];
|
||||
process.nextTick(function () {
|
||||
callback(null, 'irrelevantJob');
|
||||
});
|
||||
}
|
||||
};
|
||||
this.jobPublisher = {
|
||||
publish: function () {}
|
||||
};
|
||||
this.jobQueue = new JobQueue(this.metadataBackend, this.jobPublisher);
|
||||
});
|
||||
|
||||
it('.enqueue() should enqueue the provided job', function (done) {
|
||||
this.jobQueue.enqueue('irrelevantJob', 'irrelevantHost', function (err) {
|
||||
assert.ok(!err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('.dequeue() should dequeue the next job', function (done) {
|
||||
this.jobQueue.dequeue('irrelevantHost', function (err) {
|
||||
assert.ok(!err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('.enqueueFirst() should dequeue the next job', function (done) {
|
||||
this.jobQueue.enqueueFirst('irrelevantJob', 'irrelevantHost', function (err) {
|
||||
assert.ok(!err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
71
test/unit/batch/job_subscriber.js
Normal file
71
test/unit/batch/job_subscriber.js
Normal file
@@ -0,0 +1,71 @@
|
||||
'use strict';
|
||||
|
||||
var Channel = require('../../../batch/pubsub/channel');
|
||||
var JobSubscriber = require('../../../batch/pubsub/job-subscriber');
|
||||
var assert = require('assert');
|
||||
|
||||
describe('batch API job subscriber', function () {
|
||||
beforeEach(function () {
|
||||
var self = this;
|
||||
|
||||
this.onMessageListener = function () {};
|
||||
this.redis = {
|
||||
createClient: function () {
|
||||
return this;
|
||||
},
|
||||
subscribe: function () {
|
||||
var isValidFirstArg = arguments[0] === Channel.NAME;
|
||||
self.redis.subscribeIsCalledWithValidArgs = isValidFirstArg;
|
||||
},
|
||||
on: function () {
|
||||
if (arguments[0] === 'message') {
|
||||
self.redis.onIsCalledWithValidArgs = true;
|
||||
}
|
||||
},
|
||||
unsubscribe: function () {
|
||||
var isValidFirstArg = arguments[0] === Channel.NAME;
|
||||
self.redis.unsubscribeIsCalledWithValidArgs = isValidFirstArg;
|
||||
},
|
||||
scan: function(params, callback) {
|
||||
return callback(null, ['0']);
|
||||
},
|
||||
removeAllListeners: function () {
|
||||
return this;
|
||||
},
|
||||
smembers: function (key, callback) {
|
||||
callback(null, []);
|
||||
},
|
||||
connected: true,
|
||||
};
|
||||
this.pool = {
|
||||
acquire: function (db, cb) {
|
||||
cb(null, self.redis);
|
||||
},
|
||||
release: function(/*db, client*/) {
|
||||
|
||||
}
|
||||
};
|
||||
this.queueSeeker = {
|
||||
seek: function () {
|
||||
var callback = arguments[1];
|
||||
|
||||
callback(null, []);
|
||||
}
|
||||
};
|
||||
|
||||
this.jobSubscriber = new JobSubscriber(this.pool, this.queueSeeker);
|
||||
});
|
||||
|
||||
it('.subscribe() should listen for incoming messages', function () {
|
||||
this.jobSubscriber.subscribe(this.onMessageListener);
|
||||
assert.ok(this.redis.onIsCalledWithValidArgs);
|
||||
assert.ok(this.redis.subscribeIsCalledWithValidArgs);
|
||||
});
|
||||
|
||||
it('.unsubscribe() should stop listening for incoming messages', function () {
|
||||
this.jobSubscriber.subscribe(this.onMessageListener);
|
||||
this.jobSubscriber.unsubscribe();
|
||||
assert.ok(this.redis.unsubscribeIsCalledWithValidArgs);
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user