CartoDB-SQL-API/test/unit/batch/job_subscriber.js

66 lines
2.1 KiB
JavaScript
Raw Normal View History

2016-10-12 00:28:46 +08:00
var JobSubscriber = require('../../../batch/pubsub/job-subscriber');
2016-01-23 02:31:25 +08:00
var assert = require('assert');
describe('batch API job subscriber', function () {
beforeEach(function () {
var self = this;
2016-01-23 02:31:25 +08:00
this.onMessageListener = function () {};
this.redis = {
createClient: function () {
return this;
},
subscribe: function () {
var isValidFirstArg = arguments[0] === 'batch:hosts';
self.redis.subscribeIsCalledWithValidArgs = isValidFirstArg;
},
on: function () {
if (arguments[0] === 'message') {
self.redis.onIsCalledWithValidArgs = true;
}
2016-01-23 02:31:25 +08:00
},
unsubscribe: function () {
var isValidFirstArg = arguments[0] === 'batch:hosts';
self.redis.unsubscribeIsCalledWithValidArgs = isValidFirstArg;
2016-04-05 02:05:58 +08:00
},
scan: function(params, callback) {
return callback(null, ['0']);
},
2016-04-05 02:05:58 +08:00
removeAllListeners: function () {
return this;
},
connected: true
};
this.pool = {
acquire: function (db, cb) {
cb(null, self.redis);
},
release: function(/*db, client*/) {
2016-01-23 02:31:25 +08:00
}
};
this.queueSeeker = {
seek: function () {
var callback = arguments[1];
2016-01-23 02:31:25 +08:00
callback(null, []);
}
};
this.jobSubscriber = new JobSubscriber(this.pool, this.queueSeeker);
2016-01-23 02:31:25 +08:00
});
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);
2016-01-23 02:31:25 +08:00
this.jobSubscriber.unsubscribe();
assert.ok(this.redis.unsubscribeIsCalledWithValidArgs);
});
});