Files
privacy.sexy/tests/unit/stubs/YamlApplicationStub.ts
2021-01-05 22:28:38 +01:00

54 lines
1.7 KiB
TypeScript

import { RecommendationLevel } from '@/domain/RecommendationLevel';
import { ScriptingLanguage } from '@/domain/ScriptingLanguage';
import { YamlCategory, YamlScript, YamlApplication, YamlScriptingDefinition } from 'js-yaml-loader!@/application/application.yaml';
export class YamlApplicationStub implements YamlApplication {
public os = 'windows';
public actions: readonly YamlCategory[] = [ getCategoryStub() ];
public scripting: YamlScriptingDefinition = getTestDefinitionStub();
public withActions(actions: readonly YamlCategory[]): YamlApplicationStub {
this.actions = actions;
return this;
}
public withOs(os: string): YamlApplicationStub {
this.os = os;
return this;
}
public withScripting(scripting: YamlScriptingDefinition): YamlApplicationStub {
this.scripting = scripting;
return this;
}
}
export function getCategoryStub(scriptPrefix = 'testScript'): YamlCategory {
return {
category: 'category name',
children: [
getScriptStub(`${scriptPrefix}-standard`, RecommendationLevel.Standard),
getScriptStub(`${scriptPrefix}-strict`, RecommendationLevel.Strict),
],
};
}
function getTestDefinitionStub(): YamlScriptingDefinition {
return {
fileExtension: '.bat',
language: ScriptingLanguage[ScriptingLanguage.batchfile],
startCode: 'start',
endCode: 'end',
};
}
function getScriptStub(scriptName: string, level: RecommendationLevel = RecommendationLevel.Standard): YamlScript {
return {
name: scriptName,
code: 'script code',
revertCode: 'revert code',
recommend: RecommendationLevel[level].toLowerCase(),
call: undefined,
};
}