File: //usr/share/opensearch-dashboards/node_modules/after-all-results/test.js
'use strict';
var test = require('tape');
var aar = require('./');
test('should call the callback when all async stuff is done', function (t) {
var next = aar(function (err, results) {
t.error(err);
t.equal(results.length, 2);
t.deepEqual(results, [1, 2]);
t.end();
});
process.nextTick(next().bind(null, null, 1));
process.nextTick(next().bind(null, null, 2));
});
test('should pass on arguments to nested callbacks', function (t) {
var next = aar(function (err, results) {
t.equal(results.length, 1);
t.end();
});
var cb = next(function (a1, a2, a3) {
t.equal(a1, 1);
t.equal(a2, 2);
t.equal(a3, 3);
});
process.nextTick(cb.bind(null, 1, 2, 3));
});
test('should call the callback with the first error after all async stuff is done', function (t) {
var next = aar(function (err, results) {
t.equal(err.message, 'first');
t.equal(results.length, 2);
t.end();
});
setTimeout(next().bind(null, new Error('second')), 20);
setTimeout(next().bind(null, new Error('first')), 10);
});
test('should handle multiple async batches', function (t) {
var calledNext1 = false;
var next1 = aar(function (err, results) {
t.error(err);
t.equal(results.length, 1);
calledNext1 = true;
});
var next2 = aar(function (err, results) {
t.error(err);
t.equal(results.length, 1);
t.ok(calledNext1);
t.end();
});
setTimeout(next1(), 10);
setTimeout(next2(), 20);
});
test('should call the callback even if no calls to next() have been made', function (t) {
aar(function (err, results) {
t.deepEqual(results, []);
t.end();
});
});
test('should not care if one next-callback is called on the same tick', function (t) {
var next = aar(function (err, results) {
t.equal(results.length, 2);
t.end();
});
next()();
setTimeout(next(), 10);
});