Skip to content

Commit 56cc190

Browse files
committed
Testing both array and arguments for passing promises to when
1 parent d4f6be2 commit 56cc190

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

src/__tests__/ParsePromise-test.js

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ describe('Promise', () => {
227227
jest.runAllTimers();
228228
}));
229229

230-
it('can handle promises in parallel', asyncHelper(function(done) {
230+
it('can handle promises in parallel with array', asyncHelper(function(done) {
231231
var COUNT = 5;
232232

233233
var delay = function(ms) {
@@ -262,6 +262,41 @@ describe('Promise', () => {
262262
jest.runAllTimers();
263263
}));
264264

265+
it('can handle promises in parallel with arguments', asyncHelper(function(done) {
266+
var COUNT = 5;
267+
268+
var delay = function(ms) {
269+
var promise = new ParsePromise();
270+
setTimeout(() => { promise.resolve(); }, ms);
271+
return promise;
272+
};
273+
274+
var called = 0;
275+
var promises = [];
276+
function generate(i) {
277+
promises[i] = delay((i % 2) ? (i * 10) : (COUNT * 10) - (i * 10)).then(
278+
function() {
279+
called++;
280+
return 5 * i;
281+
});
282+
}
283+
for (var i = 0; i < COUNT; i++) {
284+
generate(i);
285+
}
286+
287+
ParsePromise.when.apply(null, promises).then(function() {
288+
expect(called).toBe(COUNT);
289+
expect(COUNT).toBe(arguments.length);
290+
var actual = arguments;
291+
for (var i = 0; i < actual.length; i++) {
292+
expect(actual[i]).toBe(5 * i);
293+
}
294+
done();
295+
});
296+
297+
jest.runAllTimers();
298+
}));
299+
265300
it('passes on errors', () => {
266301
ParsePromise.error('foo').then(() => {
267302
// This should not be reached

0 commit comments

Comments
 (0)