mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
test: Add flushPromises utility function
This commit is contained in:
@@ -4,6 +4,7 @@ import { AppRunner } from '../../../src/init/AppRunner';
|
||||
import type { CliExtractor } from '../../../src/init/cli/CliExtractor';
|
||||
import type { SettingsResolver } from '../../../src/init/variables/SettingsResolver';
|
||||
import { joinFilePath } from '../../../src/util/PathUtil';
|
||||
import { flushPromises } from '../../util/Util';
|
||||
|
||||
const app: jest.Mocked<App> = {
|
||||
start: jest.fn(),
|
||||
@@ -315,9 +316,7 @@ describe('AppRunner', (): void => {
|
||||
new AppRunner().runCliSync({ argv: [ 'node', 'script' ]});
|
||||
|
||||
// Wait until app.start has been called, because we can't await AppRunner.run.
|
||||
await new Promise((resolve): void => {
|
||||
setImmediate(resolve);
|
||||
});
|
||||
await flushPromises();
|
||||
|
||||
expect(ComponentsManager.build).toHaveBeenCalledTimes(1);
|
||||
expect(ComponentsManager.build).toHaveBeenCalledWith({
|
||||
@@ -348,9 +347,7 @@ describe('AppRunner', (): void => {
|
||||
new AppRunner().runCliSync({ argv: [ 'node', 'script' ]});
|
||||
|
||||
// Wait until app.start has been called, because we can't await AppRunner.runCli.
|
||||
await new Promise((resolve): void => {
|
||||
setImmediate(resolve);
|
||||
});
|
||||
await flushPromises();
|
||||
|
||||
expect(write).toHaveBeenCalledTimes(1);
|
||||
expect(write).toHaveBeenLastCalledWith(expect.stringMatching(/Cause: Fatal/mu));
|
||||
|
||||
@@ -7,6 +7,7 @@ import { LockingResourceStore } from '../../../src/storage/LockingResourceStore'
|
||||
import type { ResourceStore } from '../../../src/storage/ResourceStore';
|
||||
import type { ExpiringReadWriteLocker } from '../../../src/util/locking/ExpiringReadWriteLocker';
|
||||
import { guardedStreamFrom } from '../../../src/util/StreamUtil';
|
||||
import { flushPromises } from '../../util/Util';
|
||||
|
||||
function emptyFn(): void {
|
||||
// Empty
|
||||
@@ -170,7 +171,7 @@ describe('A LockingResourceStore', (): void => {
|
||||
registerEventOrder(representation.data, 'end');
|
||||
|
||||
// Provide opportunity for async events
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
// Verify the lock was acquired and released at the right time
|
||||
expect(locker.withReadLock).toHaveBeenCalledTimes(1);
|
||||
@@ -187,7 +188,7 @@ describe('A LockingResourceStore', (): void => {
|
||||
registerEventOrder(representation.data, 'end');
|
||||
|
||||
// Provide opportunity for async events
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
// Verify the lock was acquired and released at the right time
|
||||
expect(locker.withReadLock).toHaveBeenCalledTimes(1);
|
||||
@@ -205,7 +206,7 @@ describe('A LockingResourceStore', (): void => {
|
||||
registerEventOrder(representation.data, 'close');
|
||||
|
||||
// Provide opportunity for async events
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
// Verify the lock was acquired and released at the right time
|
||||
expect(locker.withReadLock).toHaveBeenCalledTimes(1);
|
||||
@@ -222,7 +223,7 @@ describe('A LockingResourceStore', (): void => {
|
||||
registerEventOrder(representation.data, 'close');
|
||||
|
||||
// Provide opportunity for async events
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
// Verify the lock was acquired and released at the right time
|
||||
expect(locker.withReadLock).toHaveBeenCalledTimes(1);
|
||||
@@ -241,7 +242,7 @@ describe('A LockingResourceStore', (): void => {
|
||||
});
|
||||
|
||||
// Provide opportunity for async events
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
// Verify the lock was acquired and released at the right time
|
||||
expect(locker.withReadLock).toHaveBeenCalledTimes(1);
|
||||
@@ -258,7 +259,7 @@ describe('A LockingResourceStore', (): void => {
|
||||
timeoutTrigger.emit('timeout');
|
||||
|
||||
// Provide opportunity for async events
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
// Verify the lock was acquired and released at the right time
|
||||
expect(locker.withReadLock).toHaveBeenCalledTimes(1);
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
guardedStreamFrom, pipeSafely, transformSafely,
|
||||
readableToString, readableToQuads, readJsonStream, getSingleItem,
|
||||
} from '../../../src/util/StreamUtil';
|
||||
import { flushPromises } from '../../util/Util';
|
||||
|
||||
jest.mock('../../../src/logging/LogUtil', (): any => {
|
||||
const logger: Logger = { warn: jest.fn(), log: jest.fn() } as any;
|
||||
@@ -132,7 +133,7 @@ describe('StreamUtil', (): void => {
|
||||
|
||||
piped.destroy(new Error('this causes an unpipe!'));
|
||||
// Allow events to propagate
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
expect(input.destroyed).toBe(true);
|
||||
});
|
||||
|
||||
@@ -149,7 +150,7 @@ describe('StreamUtil', (): void => {
|
||||
|
||||
piped.destroy(new Error('error!'));
|
||||
// Allow events to propagate
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
expect(input.destroyed).toBe(false);
|
||||
});
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import { ForbiddenHttpError } from '../../../../src/util/errors/ForbiddenHttpErr
|
||||
import { InternalServerError } from '../../../../src/util/errors/InternalServerError';
|
||||
import { GreedyReadWriteLocker } from '../../../../src/util/locking/GreedyReadWriteLocker';
|
||||
import type { ResourceLocker } from '../../../../src/util/locking/ResourceLocker';
|
||||
import { flushPromises } from '../../../util/Util';
|
||||
|
||||
// A simple ResourceLocker that keeps a queue of lock requests
|
||||
class MemoryLocker implements ResourceLocker {
|
||||
@@ -86,7 +87,7 @@ describe('A GreedyReadWriteLocker', (): void => {
|
||||
}));
|
||||
|
||||
// Allow time to attach listeners
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
emitter.emit('release2');
|
||||
await expect(promises[2]).resolves.toBe(2);
|
||||
@@ -112,12 +113,12 @@ describe('A GreedyReadWriteLocker', (): void => {
|
||||
}));
|
||||
|
||||
// Allow time to attach listeners
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
emitter.emit('release2');
|
||||
|
||||
// Allow time to finish write 2
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
emitter.emit('release0');
|
||||
emitter.emit('release1');
|
||||
@@ -140,7 +141,7 @@ describe('A GreedyReadWriteLocker', (): void => {
|
||||
}));
|
||||
|
||||
// Allow time to attach listeners
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
emitter.emit('release1');
|
||||
await expect(promises[1]).resolves.toBe(1);
|
||||
@@ -178,7 +179,7 @@ describe('A GreedyReadWriteLocker', (): void => {
|
||||
});
|
||||
|
||||
// Allow time to attach listeners
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
const promAll = Promise.all([ delayedLockWrite, lockRead ]);
|
||||
|
||||
@@ -213,7 +214,7 @@ describe('A GreedyReadWriteLocker', (): void => {
|
||||
});
|
||||
|
||||
// Allow time to attach listeners
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
const promAll = Promise.all([ delayedLockWrite, lockRead ]);
|
||||
|
||||
@@ -260,14 +261,14 @@ describe('A GreedyReadWriteLocker', (): void => {
|
||||
});
|
||||
|
||||
// Allow time to attach listeners
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
const promAll = Promise.all([ delayedLockWrite, lockRead, delayedLockRead2 ]);
|
||||
|
||||
emitter.emit('releaseRead1');
|
||||
|
||||
// Allow time to finish read 1
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
emitter.emit('releaseRead2');
|
||||
await promAll;
|
||||
@@ -302,7 +303,7 @@ describe('A GreedyReadWriteLocker', (): void => {
|
||||
});
|
||||
|
||||
// Allow time to attach listeners
|
||||
await new Promise(setImmediate);
|
||||
await flushPromises();
|
||||
|
||||
const promAll = Promise.all([ delayedLockRead, lockWrite ]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user