Refactor to a private constructor and static fromConfig

Signed-off-by: Nikolas Skoufis <nskoufis@seek.com.au>
This commit is contained in:
Nikolas Skoufis
2022-03-01 09:23:47 +11:00
parent 7a22a78180
commit 5adcf26b05
3 changed files with 10 additions and 4 deletions
@@ -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');
@@ -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<boolean> {
return this.config.getString('techdocs.builder') === 'local';
}
@@ -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.