Skip to content

Commit

Permalink
Update series to support promised arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
jgornick committed Oct 13, 2016
1 parent 8b0a403 commit 05361a4
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/series.js
@@ -1,6 +1,7 @@
import tryFn from './tryFn'
import promised from './promised';

export default function series(tasks, ...args) {
export default promised(function series(tasks, ...args) {
if (!Array.isArray(tasks)) {
return Promise.reject(new Error('First argument to series must be an array of functions'))
}
Expand All @@ -15,4 +16,4 @@ export default function series(tasks, ...args) {
}),
Promise.resolve([])
);
};
});
33 changes: 33 additions & 0 deletions test/series.js
Expand Up @@ -30,6 +30,39 @@ describe('series', function() {
]);
});

it('supports promised arguments', function() {
let order = [];
const tasks = [
(arg0, arg1) => new Promise(resolve => setTimeout(_ => {
order.push(1);
arg0.should.equal(0, 'assertion failed for series task arguments');
arg1.should.equal(1, 'assertion failed for series task arguments');
resolve(arg1)
}, 25)),
(arg0, arg1) => {
order.push(2);
arg0.should.equal(0, 'assertion failed for series task arguments');
arg1.should.equal(1, 'assertion failed for series task arguments');
return new Promise(resolve => resolve([1 + arg1, 2 + arg1]))
},
(arg0, arg1) => {
order.push(3);
arg0.should.equal(0, 'assertion failed for series task arguments');
arg1.should.equal(1, 'assertion failed for series task arguments');
return 1 + arg0 + arg1;
}
];
const p = async.series(
new Promise(resolve => setTimeout(resolve.bind(null, tasks), 25)),
Promise.resolve(0),
Promise.resolve(1)
);
return Promise.all([
p.should.eventually.deep.equal([1, [2, 3], 2]),
p.then(() => order.should.deep.equal([1, 2, 3]))
]);
});

it('supports empty collections', function() {
const p = async.series([]);
return Promise.all([
Expand Down

0 comments on commit 05361a4

Please sign in to comment.