webstudio/server/test/services/trigger_service_test.ts

110 lines
2.6 KiB
TypeScript

import { EventsFileChanger, MetaDataFileManagerModel } from "../../src/core/models/meta_data_file_manager_model";
import { TriggerService } from "../../src/core/services/trigger_service";
import { TriggerType } from "../../src/features/_triggers/models/trigger_database_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);
}
}
}