simple-job-scheduler
Version:
A simple job scheduling system written in TypeScript
41 lines • 4.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = require("chai");
const Scheduler_1 = require("../lib/Scheduler");
const waitTimeout = (durationInMillis) => new Promise((resolve) => setTimeout(resolve, durationInMillis));
describe('Scheduler tests', () => {
let executionCount;
const scheduler = new Scheduler_1.Scheduler();
beforeEach(() => {
executionCount = 0;
});
afterEach(() => {
scheduler.cancelAll();
});
it('checking that once started the scheduled runnable is executed', async () => {
// eslint-disable-next-line no-return-assign
scheduler.schedule('test', () => executionCount += 1, 5);
await waitTimeout(80);
chai_1.expect(executionCount).to.be.greaterThan(0);
});
it('verify that once the job is stopped, the runnable function is not called anymore', async () => {
// eslint-disable-next-line no-return-assign
const job = scheduler.schedule('test', () => executionCount += 1, 5);
await waitTimeout(50);
job.cancel();
const executedCount = executionCount;
await waitTimeout(50);
chai_1.expect(executionCount).to.be.equals(executedCount);
});
it('verify that started multiple time the same job name has no effect', async () => {
// eslint-disable-next-line no-return-assign
scheduler.schedule('test', () => executionCount += 1, 5);
// eslint-disable-next-line no-return-assign
scheduler.schedule('test', () => executionCount += 1000, 5);
// eslint-disable-next-line no-return-assign
scheduler.schedule('test', () => executionCount += 1000, 5);
await waitTimeout(80);
chai_1.expect(executionCount).to.be.below(20);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHMvU2NoZWR1bGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBOEI7QUFDOUIsZ0RBQTZDO0FBRTdDLE1BQU0sV0FBVyxHQUFHLENBQUMsZ0JBQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUVsSCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLElBQUksY0FBc0IsQ0FBQztJQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztJQUVsQyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0RBQStELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDN0UsNENBQTRDO1FBQzVDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsYUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtGQUFrRixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hHLDRDQUE0QztRQUM1QyxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNiLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztRQUNyQyxNQUFNLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixhQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUVBQW1FLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakYsNENBQTRDO1FBQzVDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsNENBQTRDO1FBQzVDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUQsNENBQTRDO1FBQzVDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUQsTUFBTSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsYUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==