Muthu Kumar
7 years ago
2 changed files with 22 additions and 1 deletions
@ -1,12 +1,30 @@ |
|||
'use strict'; |
|||
|
|||
const { isPromise } = require('../../util/helpers'); |
|||
|
|||
const { pass, fail } = require('./constants'); |
|||
|
|||
const runTests = tests => Promise.all(tests.map(each => { |
|||
|
|||
const pred = each.test(); |
|||
return (Array.isArray(pred) ? Promise.all(pred) : pred) |
|||
|
|||
/* There are 4 different cases at play: |
|||
1. A plain expect() is returned. |
|||
2. An array of [ expect() ] is returned |
|||
3. A plain expect() is wrapped in a promise |
|||
4. An array of [ expect() ] is wrapped in a promise. |
|||
Here we normalise all of them into something we can process */ |
|||
|
|||
if (!isPromise(pred) && !(pred && isPromise(pred[0]))) |
|||
throw new Error(`Malformed test '${each.description}'`); |
|||
const toTest = Array.isArray(pred) |
|||
? Promise.all(pred) |
|||
: pred.then(x => Array.isArray(x) ? Promise.all(x) : x); |
|||
|
|||
return toTest |
|||
.then(() => ({ description: each.description, result: pass })) |
|||
.catch(e => ({ description: each.description, result: fail, error: e })); |
|||
|
|||
})); |
|||
|
|||
module.exports = runTests; |
|||
|
Loading…
Reference in new issue