47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
|
// Copyright 2021 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { assert } from 'chai';
|
||
|
import { noop } from 'lodash';
|
||
|
|
||
|
import { AbortableProcess } from '../../util/AbortableProcess';
|
||
|
|
||
|
describe('AbortableProcess', () => {
|
||
|
it('resolves the result normally', async () => {
|
||
|
const process = new AbortableProcess(
|
||
|
'process',
|
||
|
{ abort: noop },
|
||
|
Promise.resolve(42)
|
||
|
);
|
||
|
|
||
|
assert.strictEqual(await process.getResult(), 42);
|
||
|
});
|
||
|
|
||
|
it('rejects normally', async () => {
|
||
|
const process = new AbortableProcess(
|
||
|
'process',
|
||
|
{ abort: noop },
|
||
|
Promise.reject(new Error('rejected'))
|
||
|
);
|
||
|
|
||
|
await assert.isRejected(process.getResult(), 'rejected');
|
||
|
});
|
||
|
|
||
|
it('rejects on abort', async () => {
|
||
|
let calledAbort = false;
|
||
|
const process = new AbortableProcess(
|
||
|
'A',
|
||
|
{
|
||
|
abort() {
|
||
|
calledAbort = true;
|
||
|
},
|
||
|
},
|
||
|
new Promise(noop)
|
||
|
);
|
||
|
|
||
|
process.abort();
|
||
|
await assert.isRejected(process.getResult(), 'Process "A" was aborted');
|
||
|
assert.isTrue(calledAbort);
|
||
|
});
|
||
|
});
|