- Unify test data for nonexistence of an object/string and collection. - Introduce more test through adding missing test data to existing tests. - Improve logic for checking absence of values to match tests. - Add missing tests for absent value validation. - Update documentation to include shared test functionality.
30 lines
859 B
TypeScript
30 lines
859 B
TypeScript
import { BaseEntity } from '@/infrastructure/Entity/BaseEntity';
|
|
import { IScript } from './IScript';
|
|
import { RecommendationLevel } from './RecommendationLevel';
|
|
import { IScriptCode } from './IScriptCode';
|
|
|
|
export class Script extends BaseEntity<string> implements IScript {
|
|
constructor(
|
|
public readonly name: string,
|
|
public readonly code: IScriptCode,
|
|
public readonly documentationUrls: ReadonlyArray<string>,
|
|
public readonly level?: RecommendationLevel,
|
|
) {
|
|
super(name);
|
|
if (!code) {
|
|
throw new Error(`missing code (script: ${name})`);
|
|
}
|
|
validateLevel(level);
|
|
}
|
|
|
|
public canRevert(): boolean {
|
|
return Boolean(this.code.revert);
|
|
}
|
|
}
|
|
|
|
function validateLevel(level?: RecommendationLevel) {
|
|
if (level !== undefined && !(level in RecommendationLevel)) {
|
|
throw new Error(`invalid level: ${level}`);
|
|
}
|
|
}
|