UNPKG

node-resque

Version:

an opinionated implementation of resque in node

76 lines (66 loc) 1.97 kB
var specHelper = require(__dirname + "/../_specHelper.js").specHelper; var should = require('should'); describe('plugins', function(){ var jobDelay = 100; var jobs = { "slowAdd": { plugins: [ 'jobLock' ], pluginOptions: { jobLock: {}, }, perform: function(a,b,callback){ var answer = a + b; setTimeout(function(){ callback(null, answer); }, jobDelay); }, }, "uniqueJob": { plugins: [ 'queueLock', 'delayQueueLock' ], pluginOptions: { queueLock: {}, delayQueueLock: {} }, perform: function(a,b,callback){ var answer = a + b; callback(null, answer); }, } }; before(function(done){ specHelper.connect(function(){ specHelper.cleanup(function(){ queue = new specHelper.NR.queue({connection: specHelper.cleanConnectionDetails(), queue: specHelper.queue}, jobs, function(){ done(); }); }); }); }); afterEach(function(done){ specHelper.cleanup(function(){ done(); }); }); beforeEach(function(done){ specHelper.cleanup(function(){ done(); }); }); describe('queueLock',function(){ it('will not enque a job with the same args if it is already in the queue', function(done){ queue.enqueue(specHelper.queue, "uniqueJob", [1,2], function(){ queue.enqueue(specHelper.queue, "uniqueJob", [1,2], function(){ queue.length(specHelper.queue, function(err, len){ len.should.equal(1); done(); }); }); }); }); it('will enque a job with the different args', function(done){ queue.enqueue(specHelper.queue, "uniqueJob", [1,2], function(){ queue.enqueue(specHelper.queue, "uniqueJob", [3,4], function(){ queue.length(specHelper.queue, function(err, len){ len.should.equal(2); done(); }); }); }); }); }); });