UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

106 lines (88 loc) 3.34 kB
should = require "should" sinon = require "sinon" polling = require '../../lib/polling' Channel = require("../../lib/model/channels").Channel describe 'Polling tests', -> testChannel = new Channel name: 'test' urlPattern: '/test' allow: '*' type: 'polling' pollingSchedule: '* * * * *' testChannel2 = new Channel name: 'test2' urlPattern: '/test2' allow: '*' testChannel3 = new Channel name: 'test3' urlPattern: '/test4' allow: '*' type: 'polling' pollingSchedule: '2 * * * *' disabledChannel = new Channel name: 'disabled' urlPattern: '/disabled' allow: '*' type: 'polling' pollingSchedule: '* * * * *' status: 'disabled' before (done) -> testChannel.save -> testChannel2.save -> testChannel3.save -> disabledChannel.save -> done() createSpy = -> agenda = cancel: sinon.stub().callsArg 1 define: sinon.spy() every: sinon.spy() return agenda describe 'registerPollingChannel', -> it 'should define a job for the given channel', (done) -> agendaSpy = createSpy() polling.setupAgenda agendaSpy polling.registerPollingChannel testChannel, -> agendaSpy.define.calledOnce.should.be.true agendaSpy.define.getCall(0).args[0].should.eql('polling-job-' + testChannel._id) done() it 'should cancel a job if it already exists', (done) -> agendaSpy = createSpy() polling.setupAgenda agendaSpy polling.registerPollingChannel testChannel, -> agendaSpy.cancel.calledOnce.should.be.true agendaSpy.cancel.getCall(0).args[0].should.eql({ name: 'polling-job-' + testChannel._id }) done() it 'should set the polling job', (done) -> agendaSpy = createSpy() polling.setupAgenda agendaSpy polling.registerPollingChannel testChannel, -> agendaSpy.every.calledOnce.should.be.true agendaSpy.every.getCall(0).args[0].should.eql testChannel.pollingSchedule agendaSpy.every.getCall(0).args[1].should.eql "polling-job-#{testChannel._id}" done() it 'should return an error if a the polling schedule is not set', (done) -> agendaSpy = createSpy() polling.setupAgenda agendaSpy polling.registerPollingChannel testChannel2, (err) -> err.should.exist done() describe 'removePollingChannel', -> it 'should cancel polling jobs with the given channel id', (done) -> agendaSpy = createSpy() polling.setupAgenda agendaSpy polling.removePollingChannel testChannel, (err) -> agendaSpy.cancel.calledOnce.should.be.true agendaSpy.cancel.getCall(0).args[0].should.eql { name: 'polling-job-' + testChannel._id } done() describe 'setupAgenda', -> it 'should set the global agenda', (done) -> polling.agendaGlobal = null mockAgenda = createSpy() polling.setupAgenda mockAgenda polling.agendaGlobal.should.be.exactly mockAgenda done() it 'should register a channel for each enabled polling channel', (done) -> spy = sinon.spy polling, 'registerPollingChannel' polling.setupAgenda createSpy(), -> spy.calledTwice.should.be.true spy.calledWith testChannel spy.calledWith testChannel3 spy.neverCalledWith disabledChannel done()