Refactor to enforce strictNullChecks
This commit applies `strictNullChecks` to the entire codebase to improve maintainability and type safety. Key changes include: - Remove some explicit null-checks where unnecessary. - Add necessary null-checks. - Refactor static factory functions for a more functional approach. - Improve some test names and contexts for better debugging. - Add unit tests for any additional logic introduced. - Refactor `createPositionFromRegexFullMatch` to its own function as the logic is reused. - Prefer `find` prefix on functions that may return `undefined` and `get` prefix for those that always return a value.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { BaseEntity } from '@/infrastructure/Entity/BaseEntity';
|
||||
import { ICategory, IScript } from '@/domain/ICategory';
|
||||
import { RecommendationLevel } from '@/domain/RecommendationLevel';
|
||||
import { ScriptStub } from './ScriptStub';
|
||||
|
||||
export class CategoryStub extends BaseEntity<number> implements ICategory {
|
||||
@@ -26,37 +27,44 @@ export class CategoryStub extends BaseEntity<number> implements ICategory {
|
||||
];
|
||||
}
|
||||
|
||||
public withScriptIds(...scriptIds: string[]): CategoryStub {
|
||||
public withScriptIds(...scriptIds: string[]): this {
|
||||
return this.withScripts(
|
||||
...scriptIds.map((id) => new ScriptStub(id)),
|
||||
);
|
||||
}
|
||||
|
||||
public withScripts(...scripts: IScript[]): CategoryStub {
|
||||
public withScripts(...scripts: IScript[]): this {
|
||||
for (const script of scripts) {
|
||||
this.withScript(script);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public withCategories(...categories: ICategory[]): CategoryStub {
|
||||
public withMandatoryScripts(): this {
|
||||
return this
|
||||
.withScript(new ScriptStub(`[${CategoryStub.name}] script-1`).withLevel(RecommendationLevel.Standard))
|
||||
.withScript(new ScriptStub(`[${CategoryStub.name}] script-2`).withLevel(RecommendationLevel.Strict))
|
||||
.withScript(new ScriptStub(`[${CategoryStub.name}] script-3`).withLevel(undefined));
|
||||
}
|
||||
|
||||
public withCategories(...categories: ICategory[]): this {
|
||||
for (const category of categories) {
|
||||
this.withCategory(category);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public withCategory(category: ICategory): CategoryStub {
|
||||
public withCategory(category: ICategory): this {
|
||||
this.subCategories.push(category);
|
||||
return this;
|
||||
}
|
||||
|
||||
public withScript(script: IScript): CategoryStub {
|
||||
public withScript(script: IScript): this {
|
||||
this.scripts.push(script);
|
||||
return this;
|
||||
}
|
||||
|
||||
public withName(categoryName: string) {
|
||||
public withName(categoryName: string): this {
|
||||
this.name = categoryName;
|
||||
return this;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user