Skip to content
Snippets Groups Projects
Commit 7c866961 authored by shreyvishal's avatar shreyvishal
Browse files

Added:Some Setup for unit-tesitng

parent 59d2c200
No related branches found
No related tags found
No related merge requests found
module.exports = {
roots: ["<rootDir>/src"],
testMatch: [
"**/__tests__/**/*.+(ts|tsx|js)",
"**/?(*.)+(spec|test).+(ts|tsx|js)"
],
transform: {
"^.+\\.(ts|tsx)$": "ts-jest"
},
testEnvironment: "node",
preset: "ts-jest",
moduleNameMapper: {
"^@/(.*)$": "<rootDir>/src/$1"
}
};
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"test": "jest --testTimeout=20000 --watch", "test": "jest",
"test:watch": "NODE_ENV=dev jest --watch", "test:watch": "NODE_ENV=dev jest --watch",
"test:coverage": "NODE_ENV=dev jest --testTimeout=20000 --coverage", "test:coverage": "jest --testTimeout=20000 --coverage",
"dev": "nodemon src/index.ts", "dev": "nodemon src/index.ts",
"start": "node dist/index.js", "start": "node dist/index.js",
"build": "rimraf dist && npx tsc" "build": "rimraf dist && npx tsc"
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
"express": "^4.18.2", "express": "^4.18.2",
"ini": "^4.1.1", "ini": "^4.1.1",
"inversify": "^6.0.2", "inversify": "^6.0.2",
"inversify-binding-decorators": "^4.0.0",
"inversify-express-utils": "^6.4.6", "inversify-express-utils": "^6.4.6",
"jsonata": "^2.0.3", "jsonata": "^2.0.3",
"moment": "^2.29.4", "moment": "^2.29.4",
...@@ -36,9 +37,11 @@ ...@@ -36,9 +37,11 @@
"@types/cors": "^2.8.17", "@types/cors": "^2.8.17",
"@types/express": "^4.17.21", "@types/express": "^4.17.21",
"@types/ini": "^1.3.33", "@types/ini": "^1.3.33",
"@types/jest": "^29.5.11",
"@types/uuid": "^9.0.7", "@types/uuid": "^9.0.7",
"jest": "^29.7.0", "jest": "^29.7.0",
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"ts-jest": "^29.1.1",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typescript": "^5.2.2" "typescript": "^5.2.2"
} }
......
import { inject } from "inversify"; import { inject, injectable } from "inversify";
import { controller, httpPost, requestBody } from "inversify-express-utils"; import { controller, httpPost, requestBody } from "inversify-express-utils";
import { GCLService } from "./gcl.service"; import { GCLService } from "./gcl.service";
import { XInputService } from "../x-input/x-input.service"; import { XInputService } from "../x-input/x-input.service";
...@@ -8,7 +8,7 @@ export class GCLController { ...@@ -8,7 +8,7 @@ export class GCLController {
constructor( constructor(
@inject(GCLService) private service: GCLService, @inject(GCLService) private service: GCLService,
@inject(XInputService) private xinputService: XInputService @inject(XInputService) private xinputService: XInputService
) { } ) {}
@httpPost("search") @httpPost("search")
public async search(@requestBody() body: any): Promise<any> { public async search(@requestBody() body: any): Promise<any> {
......
import "reflect-metadata";
import express, { Application, NextFunction } from "express"; import express, { Application, NextFunction } from "express";
import { container, server } from "./inversify/inversify.config"; import { container, server } from "./inversify/inversify.config";
import "./gcl/gcl.controller"; import "./gcl/gcl.controller";
...@@ -40,12 +41,12 @@ class App { ...@@ -40,12 +41,12 @@ class App {
} }
private setupMiddlewares() { private setupMiddlewares() {
const errorHandlerMiddleware = container.get<ErrorHandlerMiddleware>( // const errorHandlerMiddleware = container.get<ErrorHandlerMiddleware>(
ErrorHandlerMiddleware // ErrorHandlerMiddleware
); // );
this.app.use( // this.app.use(
errorHandlerMiddleware.handleError.bind(errorHandlerMiddleware) // errorHandlerMiddleware.handleError.bind(errorHandlerMiddleware)
); // );
} }
} }
......
...@@ -20,6 +20,6 @@ container.bind<PSClientService>(PSClientService).to(PSClientService); ...@@ -20,6 +20,6 @@ container.bind<PSClientService>(PSClientService).to(PSClientService);
container.bind<AppLogger>(AppLogger).to(AppLogger); container.bind<AppLogger>(AppLogger).to(AppLogger);
container.bind<HttpClient>(HttpClient).to(HttpClient); container.bind<HttpClient>(HttpClient).to(HttpClient);
container.bind<XInputService>(XInputService).to(XInputService); container.bind<XInputService>(XInputService).to(XInputService);
container.bind<ErrorHandlerMiddleware>(ErrorHandlerMiddleware).toSelf(); // container.bind<ErrorHandlerMiddleware>(ErrorHandlerMiddleware).toSelf();
export { server, container }; export { server, container };
import "reflect-metadata";
import { describe, it, expect, beforeEach } from "@jest/globals";
import { Container } from "inversify";
import { GCLController } from "../../gcl/gcl.controller";
import { GCLService } from "../../gcl/gcl.service";
import { XInputService } from "../../x-input/x-input.service";
import { TLService } from "../../tl/tl.service";
import { AppLogger } from "../../app/app.logger";
import { PSClientService } from "../../psclient/psclient.service";
import { ConfigService } from "../../config/config.service";
import HttpClient from "../../httpclient/http.service";
import { ErrorHandlerMiddleware } from "../../middleware/errorhandler.middleware";
const container = new Container();
// container.bind();
describe("GCL Controller Testing", () => {
// let appLogger = new AppLogger();
// let configService = new ConfigService();
// let httpClient = new HttpClient(appLogger);
// let xinputService = new XInputService(appLogger, httpClient);
// let psClientService = new PSClientService(configService, httpClient);
// let tlService = new TLService(appLogger);
// let gclService = new GCLService(tlService, psClientService);
// let gclController = new GCLController(gclService, xinputService);
// let errorHandlerMiddleware = new ErrorHandlerMiddleware(appLogger, tlService);
let container: Container;
beforeEach(async () => {
container = new Container();
container.bind<GCLController>(GCLController).toSelf();
container.bind<GCLService>(GCLService).toSelf();
// appLogger = new AppLogger();
// configService = new ConfigService();
// httpClient = new HttpClient(appLogger);
// xinputService = new XInputService(appLogger, httpClient);
// psClientService = new PSClientService(configService, httpClient);
// tlService = new TLService(appLogger);
// gclService = new GCLService(tlService, psClientService);
// gclController = new GCLController(gclService, xinputService);
// errorHandlerMiddleware = new ErrorHandlerMiddleware(appLogger, tlService);
});
it("should be defined", () => {
// let controller = container.resolve(GCLController);
let service = container.resolve(GCLService);
// const errorHandlerMiddleware = container.get<ErrorHandlerMiddleware>(
// ErrorHandlerMiddleware
// );
// this.app.use(
// errorHandlerMiddleware.handleError.bind(errorHandlerMiddleware)
// );
console.log("======>", service);
expect(service).toBeDefined();
});
});
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
// "jsx": "preserve", /* Specify what JSX code is generated. */ // "jsx": "preserve", /* Specify what JSX code is generated. */
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ "emitDecoratorMetadata": true /* Emit design-type metadata for decorated declarations in source files. */,
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
/* Completeness */ /* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true, /* Skip type checking all .d.ts files. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */,
"experimentalDecorators": true "experimentalDecorators": true
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment