44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
|
/* This file is for testing implementation regressions of Promises. */
|
||
|
|
||
|
describe('Promise', function () {
|
||
|
if (typeof Promise === 'undefined') {
|
||
|
return it('exists', function () {
|
||
|
expect(typeof Promise).to.be('function');
|
||
|
});
|
||
|
}
|
||
|
|
||
|
var ifShimIt = (typeof process !== 'undefined' && process.env.NO_ES6_SHIM) ? it.skip : it;
|
||
|
|
||
|
ifShimIt('is on the exported object', function () {
|
||
|
var exported = require('../');
|
||
|
expect(exported.Promise).to.equal(Promise);
|
||
|
});
|
||
|
|
||
|
it('ignores non-function .then arguments', function () {
|
||
|
expect(function () {
|
||
|
Promise.reject(42).then(null, 5).then(null, function () {});
|
||
|
}).not.to['throw']();
|
||
|
});
|
||
|
|
||
|
describe('extra methods (bad Chrome!)', function () {
|
||
|
it('does not have accept', function () {
|
||
|
expect(Promise).not.to.have.property('accept');
|
||
|
});
|
||
|
|
||
|
it('does not have defer', function () {
|
||
|
expect(Promise).not.to.have.property('defer');
|
||
|
});
|
||
|
|
||
|
it('does not have chain', function () {
|
||
|
expect(Promise.prototype).not.to.have.property('chain');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('requires an object context', function () {
|
||
|
// this fails in Safari 7.1 - 9
|
||
|
expect(function promiseDotCallThree() {
|
||
|
Promise.call(3, function () {});
|
||
|
}).to['throw']();
|
||
|
});
|
||
|
});
|