84 lines
3.2 KiB
TypeScript
84 lines
3.2 KiB
TypeScript
import "reflect-metadata";
|
|
import { TestCore } from "./core/test_core";
|
|
// import { UnitTestEnv } from "../src/core/di/env";
|
|
import { dirname } from "path";
|
|
// import locator from "../src/core/di/register_di";
|
|
import { ExecutorProgramServiceTest } from "./services/executor_program_service_test";
|
|
import { FilesChangerTest } from "./services/files_change_notifier_service_test";
|
|
import { TriggerServiceTest } from "./services/trigger_service_test";
|
|
import { StackServiceTest } from "./services/stack_service_test";
|
|
import { CreateDataBaseModelUseCaseTest } from "./usecases/create_database_model_usecase_test";
|
|
import { DeleteDataBaseModelUseCaseTest } from "./usecases/delete_database_model_usecase_test";
|
|
import { ReadDataBaseModelUseCaseTest } from "./usecases/read_database_model_usecase_test";
|
|
import { UpdateDataBaseModelUseCaseTest } from "./usecases/update_database_model_usecase";
|
|
import { PaginationDataBaseModelUseCaseTest } from "./usecases/pagination_database_model_usecase_test";
|
|
import { extensions } from "../src/core/extensions/extensions";
|
|
import { CrudControllerTest } from "./controllers/crud_controller_test";
|
|
import { TriggerPresentation } from "../src/features/_triggers/triggers_presentation";
|
|
import { App, Environment, ServerStatus } from "../src/core/controllers/app";
|
|
import { httpRoutes } from "../src/core/controllers/routes";
|
|
import { DataBaseConnectUseCase } from "../src/core/usecases/database_connect_usecase";
|
|
|
|
const testCore = TestCore.instance;
|
|
export const dirname__: string = dirname(__filename);
|
|
export const assert = testCore.assert;
|
|
export const resultTest = testCore.resultTest;
|
|
|
|
const tests = [
|
|
CreateDataBaseModelUseCaseTest,
|
|
DeleteDataBaseModelUseCaseTest,
|
|
ReadDataBaseModelUseCaseTest,
|
|
UpdateDataBaseModelUseCaseTest,
|
|
PaginationDataBaseModelUseCaseTest,
|
|
];
|
|
const init = async () => {
|
|
await new DataBaseConnectUseCase().call();
|
|
};
|
|
|
|
const unitTest = async () => {
|
|
await init();
|
|
await new ExecutorProgramServiceTest(dirname__).test();
|
|
await new FilesChangerTest(dirname__).test();
|
|
await new StackServiceTest(dirname__).test();
|
|
await new TriggerServiceTest().test();
|
|
await new CreateDataBaseModelUseCaseTest().test();
|
|
await new CreateDataBaseModelUseCaseTest().test();
|
|
await new DeleteDataBaseModelUseCaseTest().test();
|
|
await new ReadDataBaseModelUseCaseTest().test();
|
|
await new UpdateDataBaseModelUseCaseTest().test();
|
|
|
|
for await (const usecase of tests) {
|
|
testCore.assert(await new usecase().test(), usecase.name);
|
|
}
|
|
};
|
|
const presentationCrudControllers = [new TriggerPresentation()];
|
|
const e2eTest = async () => {
|
|
const app = new App(httpRoutes, [], Environment.E2E_TEST);
|
|
await new Promise((resolve, reject) => {
|
|
app.on(async (e) => {
|
|
if (e === ServerStatus.finished) {
|
|
for await (const el of presentationCrudControllers) {
|
|
testCore.assert(await new CrudControllerTest(app.port, el).call(), el.constructor.name);
|
|
}
|
|
resolve(e);
|
|
}
|
|
if (e === ServerStatus.error) {
|
|
console.log(e);
|
|
reject(e);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
const main = async () => {
|
|
extensions();
|
|
if (process.env.NODE_ENV === "unit") {
|
|
await unitTest();
|
|
}
|
|
|
|
if (process.env.NODE_ENV === "e2e") {
|
|
await e2eTest();
|
|
}
|
|
await testCore.testResult();
|
|
};
|
|
|
|
main();
|