From 7c866961fae167027157b73a14f1e7467ca0c337 Mon Sep 17 00:00:00 2001 From: shreyvishal <shreya.vishal@eminds.ai> Date: Thu, 11 Jan 2024 13:57:06 +0530 Subject: [PATCH] Added:Some Setup for unit-tesitng --- jest.config.ts | 15 ++++++ package.json | 7 ++- src/gcl/gcl.controller.ts | 4 +- src/index.ts | 13 ++--- src/inversify/inversify.config.ts | 2 +- src/test/industry-4.0/industry-4.0.spec.ts | 59 ++++++++++++++++++++++ tsconfig.json | 4 +- 7 files changed, 91 insertions(+), 13 deletions(-) create mode 100644 jest.config.ts create mode 100644 src/test/industry-4.0/industry-4.0.spec.ts diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..7f06a54 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,15 @@ +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" + } +}; diff --git a/package.json b/package.json index b372469..6d18954 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "description": "", "main": "index.js", "scripts": { - "test": "jest --testTimeout=20000 --watch", + "test": "jest", "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", "start": "node dist/index.js", "build": "rimraf dist && npx tsc" @@ -23,6 +23,7 @@ "express": "^4.18.2", "ini": "^4.1.1", "inversify": "^6.0.2", + "inversify-binding-decorators": "^4.0.0", "inversify-express-utils": "^6.4.6", "jsonata": "^2.0.3", "moment": "^2.29.4", @@ -36,9 +37,11 @@ "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/ini": "^1.3.33", + "@types/jest": "^29.5.11", "@types/uuid": "^9.0.7", "jest": "^29.7.0", "nodemon": "^3.0.1", + "ts-jest": "^29.1.1", "ts-node": "^10.9.1", "typescript": "^5.2.2" } diff --git a/src/gcl/gcl.controller.ts b/src/gcl/gcl.controller.ts index b0d3f2e..52e4430 100644 --- a/src/gcl/gcl.controller.ts +++ b/src/gcl/gcl.controller.ts @@ -1,4 +1,4 @@ -import { inject } from "inversify"; +import { inject, injectable } from "inversify"; import { controller, httpPost, requestBody } from "inversify-express-utils"; import { GCLService } from "./gcl.service"; import { XInputService } from "../x-input/x-input.service"; @@ -8,7 +8,7 @@ export class GCLController { constructor( @inject(GCLService) private service: GCLService, @inject(XInputService) private xinputService: XInputService - ) { } + ) {} @httpPost("search") public async search(@requestBody() body: any): Promise<any> { diff --git a/src/index.ts b/src/index.ts index eca0f53..27bdb33 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ +import "reflect-metadata"; import express, { Application, NextFunction } from "express"; import { container, server } from "./inversify/inversify.config"; import "./gcl/gcl.controller"; @@ -40,12 +41,12 @@ class App { } private setupMiddlewares() { - const errorHandlerMiddleware = container.get<ErrorHandlerMiddleware>( - ErrorHandlerMiddleware - ); - this.app.use( - errorHandlerMiddleware.handleError.bind(errorHandlerMiddleware) - ); + // const errorHandlerMiddleware = container.get<ErrorHandlerMiddleware>( + // ErrorHandlerMiddleware + // ); + // this.app.use( + // errorHandlerMiddleware.handleError.bind(errorHandlerMiddleware) + // ); } } diff --git a/src/inversify/inversify.config.ts b/src/inversify/inversify.config.ts index 2c85ae1..42a421d 100644 --- a/src/inversify/inversify.config.ts +++ b/src/inversify/inversify.config.ts @@ -20,6 +20,6 @@ container.bind<PSClientService>(PSClientService).to(PSClientService); container.bind<AppLogger>(AppLogger).to(AppLogger); container.bind<HttpClient>(HttpClient).to(HttpClient); container.bind<XInputService>(XInputService).to(XInputService); -container.bind<ErrorHandlerMiddleware>(ErrorHandlerMiddleware).toSelf(); +// container.bind<ErrorHandlerMiddleware>(ErrorHandlerMiddleware).toSelf(); export { server, container }; diff --git a/src/test/industry-4.0/industry-4.0.spec.ts b/src/test/industry-4.0/industry-4.0.spec.ts new file mode 100644 index 0000000..96ca452 --- /dev/null +++ b/src/test/industry-4.0/industry-4.0.spec.ts @@ -0,0 +1,59 @@ +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(); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 7c78d7f..34e70f7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,7 +16,7 @@ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "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'. */ // "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*'. */ @@ -100,7 +100,7 @@ /* Completeness */ // "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 } } -- GitLab