You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nodebb/test/batch.js

116 lines
2.3 KiB
JavaScript

'use strict';
const async = require('async');
const assert = require('assert');
const db = require('./mocks/databasemock');
const batch = require('../src/batch');
describe('batch', () => {
const scores = [];
const values = [];
before((done) => {
for (let i = 0; i < 100; i++) {
scores.push(i);
values.push(`val${i}`);
}
db.sortedSetAdd('processMe', scores, values, done);
});
it('should process sorted set with callbacks', (done) => {
let total = 0;
batch.processSortedSet('processMe', (items, next) => {
items.forEach((item) => {
total += item.score;
});
setImmediate(next);
}, {
withScores: true,
interval: 50,
batch: 10,
}, (err) => {
assert.ifError(err);
assert.strictEqual(total, 4950);
done();
});
});
it('should process sorted set with callbacks', (done) => {
let total = 0;
batch.processSortedSet('processMe', (values, next) => {
values.forEach((val) => {
total += val.length;
});
setImmediate(next);
}, (err) => {
assert.ifError(err);
assert.strictEqual(total, 490);
done();
});
});
it('should process sorted set with async/await', async () => {
let total = 0;
await batch.processSortedSet('processMe', (values, next) => {
values.forEach((val) => {
total += val.length;
});
setImmediate(next);
}, {});
assert.strictEqual(total, 490);
});
it('should process sorted set with async/await', async () => {
let total = 0;
await batch.processSortedSet('processMe', async (values) => {
values.forEach((val) => {
total += val.length;
});
await db.getObject('doesnotexist');
}, {});
assert.strictEqual(total, 490);
});
it('should process array with callbacks', (done) => {
let total = 0;
batch.processArray(scores, (nums, next) => {
nums.forEach((n) => {
total += n;
});
setImmediate(next);
}, {
withScores: true,
interval: 50,
batch: 10,
}, (err) => {
assert.ifError(err);
assert.strictEqual(total, 4950);
done();
});
});
it('should process array with async/await', async () => {
let total = 0;
await batch.processArray(scores, (nums, next) => {
nums.forEach((n) => {
total += n;
});
setImmediate(next);
}, {
withScores: true,
interval: 50,
batch: 10,
});
assert.strictEqual(total, 4950);
});
});