mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
fix: Introducing initializers for handling lock cleanup on start
This commit is contained in:
committed by
Joachim Van Herwegen
parent
affcb7a7b3
commit
1c65b06392
@@ -1,17 +1,17 @@
|
||||
import type { ClusterManager } from '../../../src';
|
||||
import { App } from '../../../src/init/App';
|
||||
import type { Finalizable } from '../../../src/init/final/Finalizable';
|
||||
import type { Finalizer } from '../../../src/init/final/Finalizer';
|
||||
import type { Initializer } from '../../../src/init/Initializer';
|
||||
|
||||
describe('An App', (): void => {
|
||||
let initializer: Initializer;
|
||||
let finalizer: Finalizable;
|
||||
let finalizer: Finalizer;
|
||||
let clusterManager: ClusterManager;
|
||||
let app: App;
|
||||
|
||||
beforeEach(async(): Promise<void> => {
|
||||
initializer = { handleSafe: jest.fn() } as any;
|
||||
finalizer = { finalize: jest.fn() };
|
||||
finalizer = { handleSafe: jest.fn() } as any;
|
||||
clusterManager = {} as any;
|
||||
app = new App(initializer, finalizer, clusterManager);
|
||||
});
|
||||
@@ -23,7 +23,7 @@ describe('An App', (): void => {
|
||||
|
||||
it('can stop with the finalizer.', async(): Promise<void> => {
|
||||
await expect(app.stop()).resolves.toBeUndefined();
|
||||
expect(finalizer.finalize).toHaveBeenCalledTimes(1);
|
||||
expect(finalizer.handleSafe).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it('can check its clusterManager for the threading mode.', async(): Promise<void> => {
|
||||
|
||||
11
test/unit/init/InitializableHandler.test.ts
Normal file
11
test/unit/init/InitializableHandler.test.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { InitializableHandler } from '../../../src';
|
||||
|
||||
describe('InitializableHandler', (): void => {
|
||||
const initializable = { initialize: jest.fn() };
|
||||
const initializer = new InitializableHandler(initializable);
|
||||
|
||||
it('redirects handle towards initialize.', async(): Promise<void> => {
|
||||
await initializer.handleSafe();
|
||||
expect(initializable.initialize).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
11
test/unit/init/final/FinalizableHandler.test.ts
Normal file
11
test/unit/init/final/FinalizableHandler.test.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { FinalizableHandler } from '../../../../src';
|
||||
|
||||
describe('FinalizableHandler', (): void => {
|
||||
const finalizable = { finalize: jest.fn() };
|
||||
const finalizer = new FinalizableHandler(finalizable);
|
||||
|
||||
it('redirects handle towards finalize.', async(): Promise<void> => {
|
||||
await finalizer.handleSafe();
|
||||
expect(finalizable.finalize).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
@@ -1,30 +0,0 @@
|
||||
import type { Finalizable } from '../../../../src/init/final/Finalizable';
|
||||
import { ParallelFinalizer } from '../../../../src/init/final/ParallelFinalizer';
|
||||
|
||||
describe('A ParallelFinalizer', (): void => {
|
||||
let finalizers: Finalizable[];
|
||||
let finalizer: ParallelFinalizer;
|
||||
let results: number[];
|
||||
|
||||
beforeEach(async(): Promise<void> => {
|
||||
results = [];
|
||||
finalizers = [
|
||||
{ finalize: jest.fn((): any => results.push(0)) },
|
||||
{ finalize: jest.fn((): any => results.push(1)) },
|
||||
];
|
||||
|
||||
finalizer = new ParallelFinalizer(finalizers);
|
||||
});
|
||||
|
||||
it('is finished when all finalizers are finished.', async(): Promise<void> => {
|
||||
await expect(finalizer.finalize()).resolves.toBeUndefined();
|
||||
expect(finalizers[0].finalize).toHaveBeenCalledTimes(1);
|
||||
expect(finalizers[1].finalize).toHaveBeenCalledTimes(1);
|
||||
expect(results).toEqual([ 0, 1 ]);
|
||||
});
|
||||
|
||||
it('works if there are no input finalizers.', async(): Promise<void> => {
|
||||
finalizer = new ParallelFinalizer();
|
||||
await expect(finalizer.finalize()).resolves.toBeUndefined();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user