promises-notify
Version:
Notify listener after each promise resolve/reject
66 lines (61 loc) • 1.99 kB
JavaScript
const { expect } = require('chai');
const PromiseNotify = require('../src/index');
describe('Promise Notify Sanity Tests', () => {
getPromise = (text, delay = 0, err) =>
new Promise((resolve, reject) =>
setTimeout(() => err ? reject(err) : resolve(text), delay));
it('should resolve a single promise', (done) => {
const pNotify = new PromiseNotify([getPromise('test')]);
pNotify.onEach(({index, result}) => {
expect(index).to.equal(0);
expect(result).to.equal('test');
done();
});
});
it('should resolve two promises', (done) => {
const pNotify = new PromiseNotify([
getPromise('promise1'),
getPromise('promise2', 100)
]);
let counter = 0;
pNotify.onEach(({index, result}) => {
expect(counter++).to.equal(index);
expect(result).to.equal(`promise${counter}`);
});
pNotify.onAll(() => done());
});
it('should resolve multiple promises', (done) => {
const pNotify = new PromiseNotify([
getPromise('promise1'),
getPromise('promise2', 100),
getPromise('promise3'),
getPromise('promise4', 50),
getPromise('promise5', 25)
]);
let counter = 0;
pNotify.onEach(({index, result}) => {
expect(result).to.equal(`promise${index + 1}`);
counter++;
});
pNotify.onAll(() => done(counter === 5 ? null : 'Promises didn\'t resolve as expected.'));
});
it('should handle rejects', (done) => {
const pNotify = new PromiseNotify([
getPromise('promise1', 0, 'MockError'),
getPromise('promise2', 100)
]);
let counter = 0;
pNotify.onEach(({index, result, error}) => {
if (index === 0) {
console.log(error);
expect(error).to.equal('MockError');
counter++;
} else {
console.log(result);
expect(result).to.equal('promise2');
counter++
}
});
pNotify.onAll(() => done(counter === 2 ? null : 'Promises didn\'t resolve as expected.'));
});
});