44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { assert } from 'chai';
|
|
|
|
import { InMemoryQueues } from '../../../jobs/helpers/InMemoryQueues';
|
|
|
|
describe('InMemoryQueues', () => {
|
|
describe('get', () => {
|
|
it('returns a new PQueue for each key', () => {
|
|
const queues = new InMemoryQueues();
|
|
|
|
assert.strictEqual(queues.get('a'), queues.get('a'));
|
|
assert.notStrictEqual(queues.get('a'), queues.get('b'));
|
|
assert.notStrictEqual(queues.get('b'), queues.get('c'));
|
|
});
|
|
|
|
it('returns a queue that only executes one thing at a time', () => {
|
|
const queue = new InMemoryQueues().get('foo');
|
|
|
|
assert.strictEqual(queue.concurrency, 1);
|
|
});
|
|
|
|
it('cleans up the queues when all tasks have run', async () => {
|
|
const queues = new InMemoryQueues();
|
|
|
|
const originalQueue = queues.get('foo');
|
|
|
|
originalQueue.pause();
|
|
const tasksPromise = originalQueue.addAll([
|
|
async () => {
|
|
assert.strictEqual(queues.get('foo'), originalQueue);
|
|
},
|
|
async () => {
|
|
assert.strictEqual(queues.get('foo'), originalQueue);
|
|
},
|
|
]);
|
|
originalQueue.start();
|
|
await tasksPromise;
|
|
|
|
assert.notStrictEqual(queues.get('foo'), originalQueue);
|
|
});
|
|
});
|
|
});
|