mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
73 lines
2.4 KiB
JavaScript
73 lines
2.4 KiB
JavaScript
'use strict';
|
|
|
|
/* eslint-disable no-unused-expressions */
|
|
|
|
const BbPromise = require('bluebird');
|
|
const chai = require('chai');
|
|
|
|
const PromiseTracker = require('../../lib/classes/PromiseTracker');
|
|
|
|
chai.use(require('chai-as-promised'));
|
|
|
|
const expect = chai.expect;
|
|
|
|
/**
|
|
* Mostly this class is tested by its use in peer ~/lib/classes/Variables.js
|
|
*
|
|
* Mostly, I'm creating coverage but if errors are discovered, coverage for the specific cases
|
|
* can be created here.
|
|
*/
|
|
describe('PromiseTracker', () => {
|
|
let promiseTracker;
|
|
beforeEach(() => {
|
|
promiseTracker = new PromiseTracker();
|
|
});
|
|
it('logs a warning without throwing', () => {
|
|
promiseTracker.add('foo', BbPromise.resolve(), '${foo:}');
|
|
promiseTracker.add('foo', BbPromise.delay(10), '${foo:}');
|
|
promiseTracker.report(); // shouldn't throw
|
|
return Promise.all(promiseTracker.getAll());
|
|
});
|
|
it('reports no pending promises when none have been added', () => {
|
|
const promises = promiseTracker.getPending();
|
|
expect(promises).to.be.an.instanceof(Array);
|
|
expect(promises.length).to.equal(0);
|
|
});
|
|
it('reports one pending promise when one has been added', () => {
|
|
let resolve;
|
|
const promise = new BbPromise(rslv => {
|
|
resolve = rslv;
|
|
});
|
|
promiseTracker.add('foo', promise, '${foo:}');
|
|
return BbPromise.delay(1)
|
|
.then(() => {
|
|
const promises = promiseTracker.getPending();
|
|
expect(promises).to.be.an.instanceof(Array);
|
|
expect(promises.length).to.equal(1);
|
|
expect(promises[0]).to.equal(promise);
|
|
})
|
|
.then(() => {
|
|
resolve();
|
|
});
|
|
});
|
|
it('reports no settled promises when none have been added', () => {
|
|
const promises = promiseTracker.getSettled();
|
|
expect(promises).to.be.an.instanceof(Array);
|
|
expect(promises.length).to.equal(0);
|
|
});
|
|
it('reports one settled promise when one has been added', () => {
|
|
const promise = BbPromise.resolve();
|
|
promiseTracker.add('foo', promise, '${foo:}');
|
|
promise.state = 'resolved';
|
|
const promises = promiseTracker.getSettled();
|
|
expect(promises).to.be.an.instanceof(Array);
|
|
expect(promises.length).to.equal(1);
|
|
expect(promises[0]).to.equal(promise);
|
|
return Promise.all(promiseTracker.getAll());
|
|
});
|
|
it('reports no promises when none have been added', () => {
|
|
const promises = promiseTracker.getAll();
|
|
expect(promises).to.be.an('array').that.is.empty;
|
|
});
|
|
});
|