mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-16 02:24:10 +08:00
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.dev/license
|
|
*/
|
|
|
|
import { setTimeout } from 'node:timers/promises';
|
|
import { promiseWithAbort } from '../../src/utils/promise';
|
|
|
|
describe('promiseWithAbort', () => {
|
|
it('should reject with an AbortError when the signal is aborted', async () => {
|
|
const abortController = new AbortController();
|
|
const promise = promiseWithAbort(setTimeout(500), abortController.signal, 'Test operation');
|
|
|
|
queueMicrotask(() => {
|
|
abortController.abort('Test reason');
|
|
});
|
|
|
|
await expectAsync(promise).toBeRejectedWithError();
|
|
});
|
|
|
|
it('should not reject if the signal is not aborted', async () => {
|
|
const promise = promiseWithAbort(
|
|
setTimeout(100),
|
|
AbortSignal.timeout(10_000),
|
|
'Test operation',
|
|
);
|
|
|
|
// Wait briefly to ensure no rejection occurs
|
|
await setTimeout(20);
|
|
|
|
await expectAsync(promise).toBeResolved();
|
|
});
|
|
});
|