signal-desktop/ts/test-node/jobs/helpers/InMemoryQueues_test.ts
2021-10-29 18:19:44 -05:00

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);
});
});
});