refactor: Remove Setup.

This commit is contained in:
Ruben Verborgh 2020-12-07 22:42:03 +01:00 committed by Joachim Van Herwegen
parent 04a91858c2
commit badbe0032b
12 changed files with 27 additions and 65 deletions

View File

@ -3,6 +3,7 @@
"import": [
"files-scs:config/presets/acl.json",
"files-scs:config/presets/http.json",
"files-scs:config/presets/init.json",
"files-scs:config/presets/ldp.json",
"files-scs:config/presets/ldp/credentials-extractor.json",
"files-scs:config/presets/ldp/metadata-handler.json",
@ -15,7 +16,6 @@
"files-scs:config/presets/middleware.json",
"files-scs:config/presets/pod-management.json",
"files-scs:config/presets/representation-conversion.json",
"files-scs:config/presets/setup.json",
"files-scs:config/presets/storage/backend/storage-memory.json",
"files-scs:config/presets/storage/routing/no-routing.json",
"files-scs:config/presets/storage-wrapper.json",

View File

@ -3,6 +3,7 @@
"import": [
"files-scs:config/presets/acl.json",
"files-scs:config/presets/http.json",
"files-scs:config/presets/init.json",
"files-scs:config/presets/ldp.json",
"files-scs:config/presets/ldp/credentials-extractor.json",
"files-scs:config/presets/ldp/metadata-handler.json",
@ -15,7 +16,6 @@
"files-scs:config/presets/middleware.json",
"files-scs:config/presets/pod-management.json",
"files-scs:config/presets/representation-conversion.json",
"files-scs:config/presets/setup.json",
"files-scs:config/presets/storage/backend/storage-filesystem.json",
"files-scs:config/presets/storage/routing/no-routing.json",
"files-scs:config/presets/storage-wrapper.json",

View File

@ -3,6 +3,7 @@
"import": [
"files-scs:config/presets/acl.json",
"files-scs:config/presets/http.json",
"files-scs:config/presets/init.json",
"files-scs:config/presets/ldp.json",
"files-scs:config/presets/ldp/credentials-extractor.json",
"files-scs:config/presets/ldp/metadata-handler.json",
@ -15,7 +16,6 @@
"files-scs:config/presets/middleware.json",
"files-scs:config/presets/pod-management.json",
"files-scs:config/presets/representation-conversion.json",
"files-scs:config/presets/setup.json",
"files-scs:config/presets/storage/backend/storage-filesystem.json",
"files-scs:config/presets/storage/backend/storage-memory.json",
"files-scs:config/presets/storage/backend/storage-sparql-endpoint.json",

View File

@ -3,6 +3,7 @@
"import": [
"files-scs:config/presets/acl.json",
"files-scs:config/presets/http.json",
"files-scs:config/presets/init.json",
"files-scs:config/presets/ldp.json",
"files-scs:config/presets/ldp/credentials-extractor.json",
"files-scs:config/presets/ldp/metadata-handler.json",
@ -15,7 +16,6 @@
"files-scs:config/presets/middleware.json",
"files-scs:config/presets/pod-management.json",
"files-scs:config/presets/representation-conversion.json",
"files-scs:config/presets/setup.json",
"files-scs:config/presets/storage/backend/storage-filesystem.json",
"files-scs:config/presets/storage/backend/storage-sparql-endpoint.json",
"files-scs:config/presets/storage/routing/quad-type-routing.json",

View File

@ -3,6 +3,7 @@
"import": [
"files-scs:config/presets/acl.json",
"files-scs:config/presets/http.json",
"files-scs:config/presets/init.json",
"files-scs:config/presets/ldp.json",
"files-scs:config/presets/ldp/credentials-extractor.json",
"files-scs:config/presets/ldp/metadata-handler.json",
@ -15,7 +16,6 @@
"files-scs:config/presets/middleware.json",
"files-scs:config/presets/pod-management.json",
"files-scs:config/presets/representation-conversion.json",
"files-scs:config/presets/setup.json",
"files-scs:config/presets/storage/backend/storage-sparql-endpoint.json",
"files-scs:config/presets/storage/routing/no-routing.json",
"files-scs:config/presets/storage-wrapper.json",

View File

@ -1,13 +1,6 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^1.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server:default",
"@type": "Setup",
"Setup:_initializer": {
"@id": "urn:solid-server:default:Initializer"
}
},
{
"@id": "urn:solid-server:default:Initializer",
"@type": "AllVoidCompositeHandler",

View File

@ -54,7 +54,7 @@
"test:deploy": "test/deploy/validate-package.sh",
"test:integration": "jest --coverageThreshold '{}' test/integration",
"test:unit": "jest test/unit",
"validate": "componentsjs-compile-config urn:solid-server:default -c config/config-default.json -f > /dev/null",
"validate": "componentsjs-compile-config urn:solid-server:default:Initializer -c config/config-default.json -f > /dev/null",
"version": "manual-git-changelog onversion",
"watch": "nodemon --watch \"dist/**/*.js\" --exec npm start"
},

View File

@ -18,7 +18,6 @@ export * from './init/CliRunner';
export * from './init/Initializer';
export * from './init/LoggerInitializer';
export * from './init/ServerInitializer';
export * from './init/Setup';
// LDP/HTTP/Metadata
export * from './ldp/http/metadata/BasicMetadataExtractor';

View File

@ -4,7 +4,7 @@ import type { LoaderProperties } from 'componentsjs';
import { Loader } from 'componentsjs';
import yargs from 'yargs';
import { ensureTrailingSlash } from '../util/PathUtil';
import type { Setup } from './Setup';
import type { Initializer } from './Initializer';
/**
* Generic run function for starting the server from a given config
@ -47,8 +47,8 @@ export const runCli = function({
// Setup from config file
const loader = new Loader(properties);
await loader.registerAvailableModuleResources();
const setup: Setup = await loader
.instantiateFromUrl('urn:solid-server:default', configPath, undefined, {
const initializer: Initializer = await loader
.instantiateFromUrl('urn:solid-server:default:Initializer', configPath, undefined, {
variables: {
'urn:solid-server:default:variable:baseUrl':
params.baseUrl ? ensureTrailingSlash(params.baseUrl) : `http://localhost:${params.port}/`,
@ -59,8 +59,8 @@ export const runCli = function({
'urn:solid-server:default:variable:podTemplateFolder':
params.podTemplateFolder ?? path.join(__dirname, '../../templates'),
},
}) as Setup;
await setup.setup();
}) as Initializer;
await initializer.handleSafe();
})().catch((error): void => {
// This is the only time we can *not* use the logger to print error messages, as dependency injection has failed.
stderr.write(`${error}\n`);

View File

@ -1,13 +0,0 @@
import type { Initializer } from './Initializer';
export class Setup {
private readonly initializer: Initializer;
public constructor(initializer: Initializer) {
this.initializer = initializer;
}
public async setup(): Promise<void> {
await this.initializer.handleSafe();
}
}

View File

@ -1,19 +1,19 @@
import * as path from 'path';
import { Loader } from 'componentsjs';
import { runCli } from '../../../src/init/CliRunner';
import type { Setup } from '../../../src/init/Setup';
import type { Initializer } from '../../../src/init/Initializer';
const mainModulePath = path.join(__dirname, '../../../');
const mockSetup: jest.Mocked<Setup> = {
setup: jest.fn(async(): Promise<any> => null),
} as any;
const loader: jest.Mocked<Loader> = {
instantiateFromUrl: jest.fn(async(): Promise<any> => mockSetup),
registerAvailableModuleResources: jest.fn(async(): Promise<any> => mockSetup),
const initializer: jest.Mocked<Initializer> = {
handleSafe: jest.fn(),
} as any;
const loader: jest.Mocked<Loader> = {
instantiateFromUrl: jest.fn(async(): Promise<any> => initializer),
registerAvailableModuleResources: jest.fn(),
} as any;
// Mock the Loader class.
jest.mock('componentsjs', (): any => ({
// eslint-disable-next-line @typescript-eslint/naming-convention
Loader: jest.fn((): Loader => loader),
@ -28,13 +28,13 @@ describe('CliRunner', (): void => {
runCli({
argv: [ 'node', 'script' ],
});
await mockSetup.setup();
await initializer.handleSafe();
expect(Loader).toHaveBeenCalledTimes(1);
expect(Loader).toHaveBeenCalledWith({ mainModulePath });
expect(loader.instantiateFromUrl).toHaveBeenCalledTimes(1);
expect(loader.instantiateFromUrl).toHaveBeenCalledWith(
'urn:solid-server:default',
'urn:solid-server:default:Initializer',
path.join(__dirname, '/../../../config/config-default.json'),
undefined,
{
@ -50,8 +50,8 @@ describe('CliRunner', (): void => {
);
expect(loader.registerAvailableModuleResources).toHaveBeenCalledTimes(1);
expect(loader.registerAvailableModuleResources).toHaveBeenCalledWith();
expect(mockSetup.setup).toHaveBeenCalledTimes(1);
expect(mockSetup.setup).toHaveBeenCalledWith();
expect(initializer.handleSafe).toHaveBeenCalledTimes(1);
expect(initializer.handleSafe).toHaveBeenCalledWith();
});
it('accepts abbreviated flags.', async(): Promise<void> => {
@ -67,10 +67,10 @@ describe('CliRunner', (): void => {
'-t', 'templates',
],
});
await mockSetup.setup();
await initializer.handleSafe();
expect(loader.instantiateFromUrl).toHaveBeenCalledWith(
'urn:solid-server:default',
'urn:solid-server:default:Initializer',
path.join(process.cwd(), 'myconfig.json'),
undefined,
{
@ -99,10 +99,10 @@ describe('CliRunner', (): void => {
'--podTemplateFolder', 'templates',
],
});
await mockSetup.setup();
await initializer.handleSafe();
expect(loader.instantiateFromUrl).toHaveBeenCalledWith(
'urn:solid-server:default',
'urn:solid-server:default:Initializer',
path.join(process.cwd(), 'myconfig.json'),
undefined,
{

View File

@ -1,17 +0,0 @@
import type { Initializer } from '../../../src/init/Initializer';
import { Setup } from '../../../src/init/Setup';
describe('Setup', (): void => {
const initializer: jest.Mocked<Initializer> = {
handleSafe: jest.fn(),
} as any;
beforeAll(async(): Promise<void> => {
const setup = new Setup(initializer);
await setup.setup();
});
it('calls the initializer.', async(): Promise<void> => {
expect(initializer.handleSafe).toHaveBeenCalledTimes(1);
});
});