webstudio/server/test/services/trigger_service_test.ts
2023-10-31 09:03:39 +00:00

138 lines
2.8 KiB
TypeScript

import {
EventsFileChanger,
MetaDataFileManagerModel,
} from "../../src/core/model/meta_data_file_manager_model";
import { TriggerService } from "../../src/core/services/trigger_service";
import { TriggerType } from "../../src/features/triggers/trigger_model";
import { assert } from "../test";
abstract class TriggerTest {
abstract test(): Promise<boolean>;
}
class TriggerServiceFileOkTest extends TriggerService implements TriggerTest {
constructor() {
super(
{
type: TriggerType.FILE,
value: ["context"],
},
{
"/context/": new MetaDataFileManagerModel(
"",
"",
EventsFileChanger.create
),
},
""
);
}
async test(): Promise<boolean> {
const r = await this.call();
return r.isSuccess();
}
}
class TriggerServiceFileErrorTest
extends TriggerService
implements TriggerTest
{
constructor() {
super(
{
type: TriggerType.FILE,
value: ["123"],
},
{
"/ctx/": new MetaDataFileManagerModel("", "", EventsFileChanger.create),
"/context/": new MetaDataFileManagerModel(
"",
"",
EventsFileChanger.create
),
},
""
);
}
async test(): Promise<boolean> {
const r = await this.call();
return r.isFailure();
}
}
class TriggerServiceProcessOkTest
extends TriggerService
implements TriggerTest
{
constructor() {
super(
{
type: TriggerType.PROCESS,
value: [
`function main(){
return true
}
main()`,
],
},
{
"/context/": new MetaDataFileManagerModel(
"",
"",
EventsFileChanger.create
),
},
""
);
}
async test(): Promise<boolean> {
const r = await this.call();
return r.isSuccess();
}
}
class TriggerServiceProcessErrorTest
extends TriggerService
implements TriggerTest
{
constructor() {
super(
{
type: TriggerType.PROCESS,
value: [
`function main(){
return true
}
`,
],
},
{
"/context/": new MetaDataFileManagerModel(
"",
"",
EventsFileChanger.create
),
},
""
);
}
async test(): Promise<boolean> {
const r = await this.call();
return r.isFailure();
}
}
export class TriggerServiceTest {
public async test() {
const tests: TriggerTest[] = [
new TriggerServiceFileOkTest(),
new TriggerServiceFileErrorTest(),
new TriggerServiceProcessOkTest(),
new TriggerServiceProcessErrorTest(),
];
for await (const el of tests) {
assert((await el.test()) === true, el.constructor.name);
}
}
}