Removed support for custom promise libraries

All supported platforms now provide promises, so there's no longer a need
for Jasmine to be able to create them via a user-provided library. Jasmine
can still consume non-native promises but will always use the built-in
Promise object to create promises.

[#179078103]
This commit is contained in:
Steve Gravrock
2021-08-30 19:07:26 -07:00
parent 37b9f8e420
commit d61800c5c8
8 changed files with 22 additions and 237 deletions

View File

@@ -137,37 +137,6 @@ describe('Env', function() {
);
});
describe('promise library', function() {
it('can be configured without a custom library', function() {
env.configure({});
env.configure({ Promise: undefined });
});
it('can be configured with a custom library', function() {
spyOn(env, 'deprecated');
var myLibrary = {
resolve: jasmine.createSpy(),
reject: jasmine.createSpy()
};
env.configure({ Promise: myLibrary });
expect(env.deprecated).toHaveBeenCalledWith(
'The `Promise` config property is deprecated. Future versions of ' +
'Jasmine will create native promises even if the `Promise` config ' +
'property is set. Please remove it.'
);
});
it('cannot be configured with an invalid promise library', function() {
var myLibrary = {};
expect(function() {
env.configure({ Promise: myLibrary });
}).toThrowError(
'Custom promise library missing `resolve`/`reject` functions'
);
});
});
it('defaults to multiple failures for specs', function() {
spyOn(jasmineUnderTest, 'Spec').and.callThrough();
env.it('bar', function() {});

View File

@@ -248,7 +248,7 @@ describe('Spies', function() {
});
describe('any promise-based strategy', function() {
it('works with global Promise library when available', function(done) {
it('works with global Promise library', function(done) {
var spy = env.createSpy('foo').and.resolveTo(42);
spy()
.then(function(result) {
@@ -257,20 +257,6 @@ describe('Spies', function() {
})
.catch(done.fail);
});
it('works with a custom Promise library', function() {
var customPromise = {
resolve: jasmine.createSpy(),
reject: jasmine.createSpy()
};
customPromise.resolve.and.returnValue('resolved');
spyOn(env, 'deprecated');
env.configure({ Promise: customPromise });
var spy = env.createSpy('foo').and.resolveTo(42);
expect(spy()).toEqual('resolved');
expect(customPromise.resolve).toHaveBeenCalledWith(42);
});
});
describe('when withArgs is used without a base strategy', function() {

View File

@@ -131,12 +131,8 @@ describe('SpyStrategy', function() {
describe('#resolveTo', function() {
it('allows a resolved promise to be returned', function(done) {
var originalFn = jasmine.createSpy('original'),
getPromise = function() {
return Promise;
},
spyStrategy = new jasmineUnderTest.SpyStrategy({
fn: originalFn,
getPromise: getPromise
fn: originalFn
});
spyStrategy.resolveTo(37);
@@ -151,12 +147,8 @@ describe('SpyStrategy', function() {
it('allows an empty resolved promise to be returned', function(done) {
var originalFn = jasmine.createSpy('original'),
getPromise = function() {
return Promise;
},
spyStrategy = new jasmineUnderTest.SpyStrategy({
fn: originalFn,
getPromise: getPromise
fn: originalFn
});
spyStrategy.resolveTo();
@@ -168,28 +160,13 @@ describe('SpyStrategy', function() {
})
.catch(done.fail);
});
it('fails if promises are not available', function() {
var originalFn = jasmine.createSpy('original'),
spyStrategy = new jasmineUnderTest.SpyStrategy({ fn: originalFn });
expect(function() {
spyStrategy.resolveTo(37);
}).toThrowError(
'resolveTo requires global Promise, or `Promise` configured with `jasmine.getEnv().configure()`'
);
});
});
describe('#rejectWith', function() {
it('allows a rejected promise to be returned', function(done) {
var originalFn = jasmine.createSpy('original'),
getPromise = function() {
return Promise;
},
spyStrategy = new jasmineUnderTest.SpyStrategy({
fn: originalFn,
getPromise: getPromise
fn: originalFn
});
spyStrategy.rejectWith(new Error('oops'));
@@ -205,12 +182,8 @@ describe('SpyStrategy', function() {
it('allows an empty rejected promise to be returned', function(done) {
var originalFn = jasmine.createSpy('original'),
getPromise = function() {
return Promise;
},
spyStrategy = new jasmineUnderTest.SpyStrategy({
fn: originalFn,
getPromise: getPromise
fn: originalFn
});
spyStrategy.rejectWith();
@@ -226,12 +199,8 @@ describe('SpyStrategy', function() {
it('allows a non-Error to be rejected', function(done) {
var originalFn = jasmine.createSpy('original'),
getPromise = function() {
return Promise;
},
spyStrategy = new jasmineUnderTest.SpyStrategy({
fn: originalFn,
getPromise: getPromise
fn: originalFn
});
spyStrategy.rejectWith('oops');
@@ -244,17 +213,6 @@ describe('SpyStrategy', function() {
})
.catch(done.fail);
});
it('fails if promises are not available', function() {
var originalFn = jasmine.createSpy('original'),
spyStrategy = new jasmineUnderTest.SpyStrategy({ fn: originalFn });
expect(function() {
spyStrategy.rejectWith(new Error('oops'));
}).toThrowError(
'rejectWith requires global Promise, or `Promise` configured with `jasmine.getEnv().configure()`'
);
});
});
it('allows a custom strategy to be used', function() {