eventemitter11
Version:
Next event emitter after the 10th one
72 lines (65 loc) • 2.03 kB
JavaScript
const Emitter = require('../emitter');
let emitter;
beforeEach(() => {
emitter = new Emitter();
});
describe("Basic emitter", () => {
it("should react to created events", () =>
new Promise((resolve, reject) => {
const eventName = 'test-event';
const eventArg = 'test arg';
emitter.listen(eventName, arg => {
expect(arg).toEqual(eventArg);
resolve();
});
emitter.emit(eventName, eventArg);
})
, 100);
it("should behave normally with a ttl specified", () =>
new Promise((resolve, reject) => {
const eventName = 'test-event';
const eventArg = 'test arg';
emitter.listen(eventName, arg => {
expect(arg).toEqual(eventArg);
resolve();
}, '10 minutes');
setTimeout(() => {
emitter.emit(eventName, eventArg);
}, 500);
})
, 1000);
it("should not react on expired events", () =>
new Promise((resolve, reject) => {
const eventName = 'test-event';
const eventArg = 'test arg';
emitter.listen(eventName, arg => {
reject('Emitter reacted to an expired event');
}, '2 seconds');
setTimeout(() => {
emitter.emit(eventName, eventArg);
}, 2100);
setTimeout(() => {
resolve();
}, 2200);
})
, 5000);
it("should throw an error on wrong ttl format", () => {
expect(() => emitter.listen('test', () => {}, '2 suconds')).toThrow('TTL format is wrong');
}, 5000);
it("shouldn't throw an error when only miliseconds are specified", () => {
expect(() => emitter.listen('test', () => {}, '3000')).not.toThrow();
}, 5000);
it("should work when only miliseconds are specified", () =>
new Promise((resolve, reject) => {
const eventName = 'test-event';
const eventArg = 'test arg';
emitter.listen(eventName, arg => {
expect(arg).toEqual(eventArg);
resolve();
}, '2 seconds');
setTimeout(() => {
emitter.emit(eventName, eventArg);
}, 100);
})
, 200);
});