-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'tobepending' of https://github.com/DCtheTall/jasmine
* Merges #1808 from @DCtheTall * Fixes #1803
- Loading branch information
Showing
4 changed files
with
104 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
describe('toBePending', function() { | ||
it('passes if the actual promise is pending', function() { | ||
jasmine.getEnv().requirePromises(); | ||
|
||
var matchersUtil = new jasmineUnderTest.MatchersUtil(), | ||
matcher = jasmineUnderTest.asyncMatchers.toBePending(matchersUtil), | ||
actual = new Promise(function() {}); | ||
|
||
return matcher.compare(actual).then(function(result) { | ||
expect(result).toEqual(jasmine.objectContaining({pass: true})); | ||
}); | ||
}); | ||
|
||
it('fails if the actual promise is resolved', function() { | ||
jasmine.getEnv().requirePromises(); | ||
|
||
var matchersUtil = new jasmineUnderTest.MatchersUtil(), | ||
matcher = jasmineUnderTest.asyncMatchers.toBePending(matchersUtil), | ||
actual = Promise.resolve(); | ||
|
||
return matcher.compare(actual).then(function(result) { | ||
expect(result).toEqual(jasmine.objectContaining({pass: false})); | ||
}); | ||
}); | ||
|
||
it('fails if the actual promise is rejected', function() { | ||
jasmine.getEnv().requirePromises(); | ||
|
||
var matchersUtil = new jasmineUnderTest.MatchersUtil(), | ||
matcher = jasmineUnderTest.asyncMatchers.toBePending(matchersUtil), | ||
actual = Promise.reject(new Error('promise was rejected')); | ||
|
||
return matcher.compare(actual).then(function(result) { | ||
expect(result).toEqual(jasmine.objectContaining({pass: false})); | ||
}); | ||
}); | ||
|
||
it('fails if actual is not a promise', function() { | ||
var matchersUtil = new jasmineUnderTest.MatchersUtil(), | ||
matcher = jasmineUnderTest.asyncMatchers.toBePending(matchersUtil), | ||
actual = 'not a promise'; | ||
|
||
function f() { | ||
return matcher.compare(actual); | ||
} | ||
|
||
expect(f).toThrowError( | ||
'Expected toBePending to be called on a promise.' | ||
); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
getJasmineRequireObj().toBePending = function(j$) { | ||
/** | ||
* Expect a promise to be pending, ie. the promise is neither resolved nor rejected. | ||
* @function | ||
* @async | ||
* @name async-matchers#toBePending | ||
* @since 3.5.1 (should this be the next version or the version when it was added?) | ||
* @example | ||
* await expectAsync(aPromise).toBePending(); | ||
*/ | ||
return function toBePending() { | ||
return { | ||
compare: function(actual) { | ||
if (!j$.isPromiseLike(actual)) { | ||
throw new Error('Expected toBePending to be called on a promise.'); | ||
} | ||
var want = {}; | ||
return Promise.race([actual, Promise.resolve(want)]).then( | ||
function(got) { return {pass: want === got}; }, | ||
function() { return {pass: false}; } | ||
); | ||
} | ||
}; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters