You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					92 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					92 lines
				
				2.7 KiB
			| 
											2 years ago
										 | const { assert } = require('chai'); | ||
|  | const sinon = require('sinon'); | ||
|  | const ScheduledTask = require('../src/scheduled-task'); | ||
|  | 
 | ||
|  | describe('ScheduledTask', () => { | ||
|  |     beforeEach(() => { | ||
|  |         this.clock = sinon.useFakeTimers(new Date(2018, 0, 1, 0, 0, 0, 0)); | ||
|  |     }); | ||
|  | 
 | ||
|  |     afterEach(() => { | ||
|  |         this.clock.restore(); | ||
|  |     }); | ||
|  | 
 | ||
|  |     it('should start a task by default', (done) => { | ||
|  |         let executed = 0; | ||
|  |         let scheduledTask = new ScheduledTask('* * * * * *', () => { | ||
|  |             executed += 1; | ||
|  |         }); | ||
|  |         this.clock.tick(3000); | ||
|  |         assert.equal(3, executed); | ||
|  |         scheduledTask.stop(); | ||
|  |         done(); | ||
|  |     }); | ||
|  | 
 | ||
|  |     it('should create a task stoped', (done) => { | ||
|  |         let executed = 0; | ||
|  |         let scheduledTask = new ScheduledTask('* * * * * *', () => { | ||
|  |             executed += 1; | ||
|  |         }, { scheduled: false }); | ||
|  |         this.clock.tick(3000); | ||
|  |         assert.equal(0, executed); | ||
|  |         scheduledTask.stop(); | ||
|  |         done(); | ||
|  |     }); | ||
|  | 
 | ||
|  |     it('should start a task', (done) => { | ||
|  |         let executed = 0; | ||
|  |         let scheduledTask = new ScheduledTask('* * * * * *', () => { | ||
|  |             executed += 1; | ||
|  |         }, { scheduled: false }); | ||
|  |         this.clock.tick(3000); | ||
|  |         assert.equal(0, executed); | ||
|  |         scheduledTask.start(); | ||
|  |         this.clock.tick(3000); | ||
|  |         assert.equal(3, executed); | ||
|  |         scheduledTask.stop(); | ||
|  |         done(); | ||
|  |     }); | ||
|  | 
 | ||
|  |     it('should stop a task', () => { | ||
|  |         let executed = 0; | ||
|  |         let scheduledTask = new ScheduledTask('* * * * * *', () => { | ||
|  |             executed += 1; | ||
|  |         }, { scheduled: true }); | ||
|  |         this.clock.tick(3000); | ||
|  |         assert.equal(3, executed); | ||
|  |         scheduledTask.stop(); | ||
|  |         this.clock.tick(3000); | ||
|  |         assert.equal(3, executed); | ||
|  |     }); | ||
|  |      | ||
|  |     it('should create a task stopped and run it once created', () => { | ||
|  |         let executed = 0; | ||
|  |         new ScheduledTask('* * * * * *', () => { | ||
|  |             executed += 1; | ||
|  |         }, { scheduled: false, runOnInit: true }); | ||
|  |         this.clock.tick(3000); | ||
|  |         assert.equal(1, executed); | ||
|  |     }); | ||
|  |      | ||
|  |     it('should create a task stopped and run it once manually', () => { | ||
|  |         let executed = 0; | ||
|  |         let scheduledTask = new ScheduledTask('* * * * * *', () => { | ||
|  |             executed += 1; | ||
|  |         }, { scheduled: false }); | ||
|  |         this.clock.tick(3000); | ||
|  |         assert.equal(0, executed); | ||
|  |         scheduledTask.now(); | ||
|  |         assert.equal(1, executed); | ||
|  |     }); | ||
|  | 
 | ||
|  |     it('should emit event every minute', () => { | ||
|  |         let executed = 0; | ||
|  |         let scheduledTask = new ScheduledTask('0 * * * * *', () => { | ||
|  |             executed += 1; | ||
|  |         }, { scheduled: true }); | ||
|  |         this.clock.tick(60000 * 3); | ||
|  |         assert.equal(3, executed); | ||
|  |         scheduledTask.stop(); | ||
|  |     }); | ||
|  | }); |