UNPKG

cliche-scheduler

Version:

Job queue and scheduler for cliche.js

78 lines (57 loc) 1.95 kB
const { expect } = require('chai'); const path = require('path'); const Scheduler = require('../'); describe('cliche-scheduler', () => { it('should instantiate Scheduler', () => { const scheduler = new Scheduler(); expect(scheduler).to.be.an.instanceof(Scheduler); }); it('should instantiate Scheduler with a custom namespace', () => { const scheduler = new Scheduler('custom'); expect(scheduler).to.be.an.instanceof(Scheduler); }); it('should load jobs from directory', () => { const scheduler = new Scheduler(); const jobsDir = path.join(__dirname, 'jobs'); scheduler.loadJobs(jobsDir); expect(scheduler); }); it('should schedule a job', done => { const scheduler = new Scheduler(); const jobsDir = path.join(__dirname, 'jobs'); scheduler.loadJobs(jobsDir); scheduler.schedule('testTask').then(job => { expect(job).to.be.an('object'); expect(job.id).to.be.a('number'); job.on('complete', () => { done(); }); }); }); it('should schedule a job with a delay', function (done) { this.timeout(5000); const scheduler = new Scheduler(); const jobsDir = path.join(__dirname, 'jobs'); scheduler.loadJobs(jobsDir); scheduler.schedule('testTask', {}, 1000).then(job => { expect(job).to.be.an('object'); expect(job.id).to.be.a('number'); job.on('complete', () => { done(); }); }); }); it('should process jobs scheduled by another instance of the same namespace', done => { const scheduler1 = new Scheduler('namespace'); const scheduler2 = new Scheduler('namespace'); const jobsDir = path.join(__dirname, 'jobs'); scheduler1.loadJobs(jobsDir); scheduler2.schedule('testTask', {}).then(job => { expect(job).to.be.an('object'); expect(job.id).to.be.a('number'); job.on('complete', () => { done(); }); }); }); });