Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

scheduler-test.js 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. const { assert } = require('chai');
  2. const sinon = require('sinon');
  3. const Scheduler = require('../src/scheduler');
  4. describe('Scheduler', () => {
  5. beforeEach(() => {
  6. this.clock = sinon.useFakeTimers();
  7. });
  8. afterEach(() => {
  9. this.clock.restore();
  10. });
  11. it('should emit an event on matched time', (done) => {
  12. let scheduler = new Scheduler('* * * * * *');
  13. scheduler.on('scheduled-time-matched', (date) => {
  14. assert.isNotNull(date);
  15. assert.instanceOf(date, Date);
  16. scheduler.stop();
  17. done();
  18. });
  19. scheduler.start();
  20. this.clock.tick(1000);
  21. });
  22. it('should emit an event every second', (done) => {
  23. let scheduler = new Scheduler('* * * * * *');
  24. let emited = 0;
  25. scheduler.on('scheduled-time-matched', (date) => {
  26. emited += 1;
  27. assert.isNotNull(date);
  28. assert.instanceOf(date, Date);
  29. if(emited === 5){
  30. scheduler.stop();
  31. done();
  32. }
  33. });
  34. scheduler.start();
  35. this.clock.tick(5000);
  36. });
  37. it('should recover missed executions', (done) => {
  38. this.clock.restore();
  39. let scheduler = new Scheduler('* * * * * *', null, true);
  40. let emited = 0;
  41. scheduler.on('scheduled-time-matched', () => {
  42. emited += 1;
  43. });
  44. scheduler.start();
  45. let wait = true;
  46. let startedAt = new Date();
  47. while(wait){
  48. if((new Date().getTime() - startedAt.getTime()) > 1000){
  49. wait = false;
  50. }
  51. }
  52. setTimeout(() => {
  53. scheduler.stop();
  54. assert.equal(2, emited);
  55. done();
  56. }, 1000);
  57. }).timeout(3000);
  58. it('should ignore missed executions', (done) => {
  59. this.clock.restore();
  60. let scheduler = new Scheduler('* * * * * *', null, false);
  61. let emited = 0;
  62. scheduler.on('scheduled-time-matched', () => {
  63. emited += 1;
  64. });
  65. scheduler.start();
  66. let wait = true;
  67. let startedAt = new Date();
  68. while(wait){
  69. if((new Date().getTime() - startedAt.getTime()) > 1000){
  70. wait = false;
  71. }
  72. }
  73. setTimeout(() => {
  74. scheduler.stop();
  75. assert.equal(1, emited);
  76. done();
  77. }, 1000);
  78. }).timeout(3000);
  79. });