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.
116 lines
2.3 KiB
JavaScript
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);
|
|
});
|
|
});
|