UNPKG

@fizzygalacticus/is-promise

Version:

Help determine if a value is a Promise.

51 lines (38 loc) 1.39 kB
'use strict'; const assert = require('assert'); const isPromise = require('../'); const constructLib = libName => () => { const constructor = require(libName); return new constructor(resolve => resolve()); }; const createTest = (libName, instantiate = () => {}, expectedPromise, expectedUncertainty) => describe(libName, () => { const instance = instantiate(); it(`${expectedPromise ? 'is' : `isn't`} a promise`, () => { const { promise } = isPromise(instance); assert.equal(promise, expectedPromise); }); it(`${expectedUncertainty ? 'has' : `doesn't have`} uncertainty`, () => { const { uncertainty } = isPromise(instance); assert.equal(uncertainty, expectedUncertainty); }); }); describe('is-promise', () => { createTest('native', () => new Promise(resolve => resolve()), true, false); // Standard third parties ['bluebird', 'q', 'promise'].forEach(thirdPartyLib => createTest(thirdPartyLib, constructLib(thirdPartyLib), true, true) ); // Special snowflakes ['rsvp'].forEach(thirdPartyLib => createTest( thirdPartyLib, () => { const rsvp = require('rsvp'); return new rsvp.Promise(resolve => resolve()); }, true, true ) ); });