From 5adcf26b0513d6958d736ab4117c810415093772 Mon Sep 17 00:00:00 2001 From: Nikolas Skoufis Date: Tue, 1 Mar 2022 09:23:47 +1100 Subject: [PATCH] Refactor to a private constructor and static fromConfig Signed-off-by: Nikolas Skoufis --- .../techdocs-backend/src/service/DocsBuildStrategy.test.ts | 6 ++++-- plugins/techdocs-backend/src/service/DocsBuildStrategy.ts | 6 +++++- plugins/techdocs-backend/src/service/router.ts | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/techdocs-backend/src/service/DocsBuildStrategy.test.ts b/plugins/techdocs-backend/src/service/DocsBuildStrategy.test.ts index 029d8d223f..76b70e67e9 100644 --- a/plugins/techdocs-backend/src/service/DocsBuildStrategy.test.ts +++ b/plugins/techdocs-backend/src/service/DocsBuildStrategy.test.ts @@ -41,7 +41,8 @@ describe('DefaultDocsBuildStrategy', () => { describe('shouldBuild', () => { it('should return true when techdocs.build is set to local', async () => { - const defaultDocsBuildStrategy = new DefaultDocsBuildStrategy(config); + const defaultDocsBuildStrategy = + DefaultDocsBuildStrategy.fromConfig(config); MockedConfigReader.prototype.getString.mockReturnValue('local'); @@ -51,7 +52,8 @@ describe('DefaultDocsBuildStrategy', () => { }); it('should return false when techdocs.build is set to external', async () => { - const defaultDocsBuildStrategy = new DefaultDocsBuildStrategy(config); + const defaultDocsBuildStrategy = + DefaultDocsBuildStrategy.fromConfig(config); MockedConfigReader.prototype.getString.mockReturnValue('external'); diff --git a/plugins/techdocs-backend/src/service/DocsBuildStrategy.ts b/plugins/techdocs-backend/src/service/DocsBuildStrategy.ts index 2e8cc52d3e..e0220d7a32 100644 --- a/plugins/techdocs-backend/src/service/DocsBuildStrategy.ts +++ b/plugins/techdocs-backend/src/service/DocsBuildStrategy.ts @@ -28,10 +28,14 @@ export interface DocsBuildStrategy { export class DefaultDocsBuildStrategy { private readonly config: Config; - constructor(config: Config) { + private constructor(config: Config) { this.config = config; } + static fromConfig(config: Config): DefaultDocsBuildStrategy { + return new DefaultDocsBuildStrategy(config); + } + async shouldBuild(_: Entity): Promise { return this.config.getString('techdocs.builder') === 'local'; } diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index d620020245..4d51ebd485 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -106,7 +106,7 @@ export async function createRouter( const { publisher, config, logger, discovery } = options; const catalogClient = new CatalogClient({ discoveryApi: discovery }); const docsBuildStrategy = - options.docsBuildStrategy ?? new DefaultDocsBuildStrategy(config); + options.docsBuildStrategy ?? DefaultDocsBuildStrategy.fromConfig(config); // Entities are cached to optimize the /static/docs request path, which can be called many times // when loading a single techdocs page.