| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- const { assert } = require('chai');
- const sinon = require('sinon');
- const Scheduler = require('../src/scheduler');
-
- describe('Scheduler', () => {
- beforeEach(() => {
- this.clock = sinon.useFakeTimers();
- });
-
- afterEach(() => {
- this.clock.restore();
- });
-
- it('should emit an event on matched time', (done) => {
- let scheduler = new Scheduler('* * * * * *');
-
- scheduler.on('scheduled-time-matched', (date) => {
- assert.isNotNull(date);
- assert.instanceOf(date, Date);
- scheduler.stop();
- done();
- });
-
- scheduler.start();
- this.clock.tick(1000);
- });
-
- it('should emit an event every second', (done) => {
- let scheduler = new Scheduler('* * * * * *');
- let emited = 0;
- scheduler.on('scheduled-time-matched', (date) => {
- emited += 1;
- assert.isNotNull(date);
- assert.instanceOf(date, Date);
- if(emited === 5){
- scheduler.stop();
- done();
- }
- });
- scheduler.start();
- this.clock.tick(5000);
- });
-
- it('should recover missed executions', (done) => {
- this.clock.restore();
- let scheduler = new Scheduler('* * * * * *', null, true);
- let emited = 0;
- scheduler.on('scheduled-time-matched', () => {
- emited += 1;
- });
- scheduler.start();
- let wait = true;
- let startedAt = new Date();
-
- while(wait){
- if((new Date().getTime() - startedAt.getTime()) > 1000){
- wait = false;
- }
- }
-
- setTimeout(() => {
- scheduler.stop();
- assert.equal(2, emited);
- done();
- }, 1000);
- }).timeout(3000);
-
- it('should ignore missed executions', (done) => {
- this.clock.restore();
- let scheduler = new Scheduler('* * * * * *', null, false);
- let emited = 0;
- scheduler.on('scheduled-time-matched', () => {
- emited += 1;
- });
- scheduler.start();
- let wait = true;
- let startedAt = new Date();
-
- while(wait){
- if((new Date().getTime() - startedAt.getTime()) > 1000){
- wait = false;
- }
- }
-
- setTimeout(() => {
- scheduler.stop();
- assert.equal(1, emited);
- done();
- }, 1000);
- }).timeout(3000);
- });
|