add support for shared functions #41
This commit is contained in:
18
tests/unit/stubs/ScriptCompilerStub.ts
Normal file
18
tests/unit/stubs/ScriptCompilerStub.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { IScriptCompiler } from '@/application/Parser/Compiler/IScriptCompiler';
|
||||
import { IScriptCode } from '@/domain/IScriptCode';
|
||||
import { YamlScript } from 'js-yaml-loader!./application.yaml';
|
||||
|
||||
export class ScriptCompilerStub implements IScriptCompiler {
|
||||
public compilables = new Map<YamlScript, IScriptCode>();
|
||||
public canCompile(script: YamlScript): boolean {
|
||||
return this.compilables.has(script);
|
||||
}
|
||||
public compile(script: YamlScript): IScriptCode {
|
||||
return this.compilables.get(script);
|
||||
}
|
||||
public withCompileAbility(script: YamlScript, result?: IScriptCode): ScriptCompilerStub {
|
||||
this.compilables.set(script, result ||
|
||||
{ execute: `compiled code of ${script.name}`, revert: `compiled revert code of ${script.name}` });
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,10 @@ import { RecommendationLevel } from '@/domain/RecommendationLevel';
|
||||
|
||||
export class ScriptStub extends BaseEntity<string> implements IScript {
|
||||
public name = `name${this.id}`;
|
||||
public code = `REM code${this.id}`;
|
||||
public revertCode = `REM revertCode${this.id}`;
|
||||
public code = {
|
||||
execute: `REM execute-code (${this.id})`,
|
||||
revert: `REM revert-code (${this.id})`,
|
||||
};
|
||||
public readonly documentationUrls = new Array<string>();
|
||||
public level = RecommendationLevel.Standard;
|
||||
|
||||
@@ -14,7 +16,7 @@ export class ScriptStub extends BaseEntity<string> implements IScript {
|
||||
}
|
||||
|
||||
public canRevert(): boolean {
|
||||
return Boolean(this.revertCode);
|
||||
return Boolean(this.code.revert);
|
||||
}
|
||||
|
||||
public withLevel(value: RecommendationLevel): ScriptStub {
|
||||
@@ -23,7 +25,7 @@ export class ScriptStub extends BaseEntity<string> implements IScript {
|
||||
}
|
||||
|
||||
public withCode(value: string): ScriptStub {
|
||||
this.code = value;
|
||||
this.code.execute = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -33,7 +35,7 @@ export class ScriptStub extends BaseEntity<string> implements IScript {
|
||||
}
|
||||
|
||||
public withRevertCode(revertCode: string): ScriptStub {
|
||||
this.revertCode = revertCode;
|
||||
this.code.revert = revertCode;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
61
tests/unit/stubs/YamlScriptStub.ts
Normal file
61
tests/unit/stubs/YamlScriptStub.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import { RecommendationLevel } from '@/domain/RecommendationLevel';
|
||||
import { ScriptFunctionCall, YamlScript } from 'js-yaml-loader!./application.yaml';
|
||||
|
||||
export class YamlScriptStub implements YamlScript {
|
||||
public static createWithCode(): YamlScriptStub {
|
||||
return new YamlScriptStub()
|
||||
.withCode('stub-code')
|
||||
.withRevertCode('stub-revert-code');
|
||||
}
|
||||
public static createWithCall(call?: ScriptFunctionCall): YamlScriptStub {
|
||||
let instance = new YamlScriptStub();
|
||||
if (call) {
|
||||
instance = instance.withCall(call);
|
||||
} else {
|
||||
instance = instance.withMockCall();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
public static createWithoutCallOrCodes(): YamlScriptStub {
|
||||
return new YamlScriptStub();
|
||||
}
|
||||
|
||||
public name = 'valid-name';
|
||||
public code = undefined;
|
||||
public revertCode = undefined;
|
||||
public call = undefined;
|
||||
public recommend = RecommendationLevel[RecommendationLevel.Standard].toLowerCase();
|
||||
public docs = ['hello.com'];
|
||||
|
||||
private constructor() { }
|
||||
|
||||
public withName(name: string): YamlScriptStub {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public withDocs(docs: string[]): YamlScriptStub {
|
||||
this.docs = docs;
|
||||
return this;
|
||||
}
|
||||
|
||||
public withCode(code: string): YamlScriptStub {
|
||||
this.code = code;
|
||||
return this;
|
||||
}
|
||||
|
||||
public withRevertCode(revertCode: string): YamlScriptStub {
|
||||
this.revertCode = revertCode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public withMockCall(): YamlScriptStub {
|
||||
this.call = { function: 'func', parameters: [] };
|
||||
return this;
|
||||
}
|
||||
|
||||
public withCall(call: ScriptFunctionCall): YamlScriptStub {
|
||||
this.call = call;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user