UNPKG

prray

Version:

'Promisified' Array, comes with async method supports(such as mapAsync). And it is compatible with normal array.

77 lines (62 loc) 1.89 kB
import test from 'ava' import * as sinon from 'sinon' import { prray } from '../src/prray' import { toPrrayPromise, delay } from './test-utils' test('prray forEachAsync', async t => { const result1: number[] = [] await prray([1, 2, 3]).forEachAsync(async v => { await delay(100) result1.push(v + 1) }) t.deepEqual(result1, [2, 3, 4]) const result2: number[] = [] await prray([1, 2, 3]).forEachAsync(v => { result2.push(v + 1) }) t.deepEqual(result2, [2, 3, 4]) }) test('prraypromise forEachAsync', async t => { const result1: number[] = [] await toPrrayPromise([1, 2, 3]).forEachAsync(async v => { await delay(100) result1.push(v + 1) }) t.deepEqual(result1, [2, 3, 4]) const result2: number[] = [] await toPrrayPromise([1, 2, 3]).forEachAsync(v => { result2.push(v + 1) }) t.deepEqual(result2, [2, 3, 4]) }) test('prray forEachAsync compatibility', async t => { const func = sinon.fake() const prr = prray(['a', 'b', 'c']) await prr.forEachAsync(func) t.is(func.called, true) t.is(func.callCount, 3) t.is(func.args[0][0], 'a') t.is(func.args[0][1], 0) t.is(func.args[0][2], prr) t.is(func.args[1][0], 'b') t.is(func.args[1][1], 1) t.is(func.args[1][2], prr) t.is(func.args[2][0], 'c') t.is(func.args[2][1], 2) t.is(func.args[2][2], prr) }) test('prraypromise forEachAsync compatibility', async t => { const func = sinon.fake() const p = toPrrayPromise(['a', 'b', 'c']) await p.forEachAsync(func) t.is(func.called, true) t.is(func.callCount, 3) t.is(func.args[0][0], 'a') t.is(func.args[0][1], 0) t.deepEqual(func.args[0][2], prray(['a', 'b', 'c'])) t.is(func.args[1][0], 'b') t.is(func.args[1][1], 1) t.deepEqual(func.args[1][2], prray(['a', 'b', 'c'])) t.is(func.args[2][0], 'c') t.is(func.args[2][1], 2) t.deepEqual(func.args[2][2], prray(['a', 'b', 'c'])) })