71 lines
1.8 KiB
TypeScript
71 lines
1.8 KiB
TypeScript
import mongoose from "mongoose";
|
|
import { delay } from "../../src/core/helpers/delay";
|
|
import { Result } from "../../src/core/helpers/result";
|
|
import { TypedEvent } from "../../src/core/helpers/typed_event";
|
|
|
|
export const before = async () => {
|
|
await mongoose.connection.dropDatabase();
|
|
};
|
|
|
|
export class TestCore {
|
|
allTests = 0;
|
|
testErr = 0;
|
|
testOk = 0;
|
|
private static _instance: TestCore;
|
|
|
|
public static get instance() {
|
|
return this._instance || (this._instance = new this());
|
|
}
|
|
|
|
assert = (test: boolean, testName: string) => {
|
|
this.allTests += 1;
|
|
if (test) {
|
|
console.log("\x1b[32m", "✅ - " + testName);
|
|
this.testOk += 1;
|
|
return;
|
|
}
|
|
this.testErr += 1;
|
|
console.log("\x1b[31m", "❌ - " + testName);
|
|
};
|
|
|
|
testResult = async () => {
|
|
console.log("\x1b[32m", "=============");
|
|
|
|
if (this.allTests - this.testOk === 0) {
|
|
console.log("\x1b[32m", `✅ All test success! ${this.allTests}/${this.testOk}`);
|
|
return;
|
|
}
|
|
if (this.testErr !== 0) {
|
|
console.log("\x1b[31m", "❌ test error:" + String(this.testErr));
|
|
console.log("\x1b[32m", `✅ test success! ${this.testOk}`);
|
|
}
|
|
await before();
|
|
};
|
|
resultTest = async (
|
|
eventClass: TypedEvent<Result<any, any>> | any,
|
|
args: any,
|
|
testName: string,
|
|
isOk: boolean,
|
|
delayTime = 1000
|
|
) => {
|
|
let testIsOk = false;
|
|
eventClass.call(...args);
|
|
const listener = eventClass.on((e: { fold: (arg0: (_s: any) => void, arg1: (_e: any) => void) => void }) => {
|
|
e.fold(
|
|
() => {
|
|
if (isOk) {
|
|
testIsOk = true;
|
|
}
|
|
},
|
|
() => {
|
|
if (!isOk) {
|
|
testIsOk = true;
|
|
}
|
|
}
|
|
);
|
|
});
|
|
await delay(delayTime);
|
|
this.assert(testIsOk, testName);
|
|
listener.dispose();
|
|
};
|
|
}
|