UNPKG

inversify-express-utils

Version:

Some utilities for the development of express applications with Inversify

168 lines 7.88 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); const globals_1 = require("@jest/globals"); const inversify_1 = require("inversify"); const base_http_controller_1 = require("../base_http_controller"); const debug_1 = require("../debug"); const decorators_1 = require("../decorators"); const server_1 = require("../server"); const utils_1 = require("../utils"); (0, globals_1.describe)('Debug utils', () => { (0, globals_1.beforeEach)(() => { (0, utils_1.cleanUpMetadata)(); }); (0, globals_1.it)('should be able to get router info', () => { const container = new inversify_1.Container(); let UserController = class UserController extends base_http_controller_1.BaseHttpController { get() { return {}; } post() { return {}; } delete(_id) { return {}; } }; __decorate([ (0, decorators_1.httpGet)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], UserController.prototype, "get", null); __decorate([ (0, decorators_1.httpPost)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], UserController.prototype, "post", null); __decorate([ (0, decorators_1.httpDelete)('/:id'), __param(0, (0, decorators_1.requestParam)('id')), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], UserController.prototype, "delete", null); UserController = __decorate([ (0, decorators_1.controller)('/api/user') ], UserController); let OrderController = class OrderController extends base_http_controller_1.BaseHttpController { get() { return {}; } post() { return {}; } delete(_id) { return {}; } }; __decorate([ (0, decorators_1.httpGet)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], OrderController.prototype, "get", null); __decorate([ (0, decorators_1.httpPost)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], OrderController.prototype, "post", null); __decorate([ (0, decorators_1.httpDelete)('/:id'), __param(0, (0, decorators_1.requestParam)('id')), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], OrderController.prototype, "delete", null); OrderController = __decorate([ (0, decorators_1.controller)('/api/order') ], OrderController); // eslint-disable-next-line @typescript-eslint/typedef const TYPES = { OrderController: OrderController.name, UserController: UserController.name, }; const server = new server_1.InversifyExpressServer(container); server.build(); const routeInfo = (0, debug_1.getRouteInfo)(container); (0, globals_1.expect)(routeInfo[0]?.controller).toBe(TYPES.OrderController); (0, globals_1.expect)(routeInfo[0]?.endpoints[0]?.route).toBe('GET /api/order/'); (0, globals_1.expect)(routeInfo[0]?.endpoints[0]?.args).toBeUndefined(); (0, globals_1.expect)(routeInfo[0]?.endpoints[1]?.route).toBe('POST /api/order/'); (0, globals_1.expect)(routeInfo[0]?.endpoints[1]?.args).toBeUndefined(); (0, globals_1.expect)(routeInfo[0]?.endpoints[2]?.route).toBe('DELETE /api/order/:id'); const arg1 = routeInfo[0]?.endpoints[2]?.args; if (arg1 !== undefined) { (0, globals_1.expect)(arg1[0]).toBe('@requestParam id'); } else { (0, globals_1.expect)(true).toBe(false); } (0, globals_1.expect)(routeInfo[1]?.controller).toBe(TYPES.UserController); (0, globals_1.expect)(routeInfo[1]?.endpoints[0]?.route).toBe('GET /api/user/'); (0, globals_1.expect)(routeInfo[1]?.endpoints[1]?.args).toBeUndefined(); (0, globals_1.expect)(routeInfo[1]?.endpoints[1]?.route).toBe('POST /api/user/'); (0, globals_1.expect)(routeInfo[1]?.endpoints[1]?.args).toBeUndefined(); (0, globals_1.expect)(routeInfo[1]?.endpoints[2]?.route).toBe('DELETE /api/user/:id'); const arg2 = routeInfo[1]?.endpoints[2]?.args; if (arg2 !== undefined) { (0, globals_1.expect)(arg2[0]).toBe('@requestParam id'); } else { (0, globals_1.expect)(true).toBe(false); } }); (0, globals_1.it)('should be able to handle missig parameter metadata', () => { const container = new inversify_1.Container(); let OrderController = class OrderController extends base_http_controller_1.BaseHttpController { get() { return {}; } post() { return {}; } }; __decorate([ (0, decorators_1.httpGet)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], OrderController.prototype, "get", null); __decorate([ (0, decorators_1.httpPost)('/'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], OrderController.prototype, "post", null); OrderController = __decorate([ (0, decorators_1.controller)('/api/order') ], OrderController); // eslint-disable-next-line @typescript-eslint/typedef const TYPES = { OrderController: OrderController.name, }; const server = new server_1.InversifyExpressServer(container); server.build(); const routeInfo = (0, debug_1.getRouteInfo)(container); (0, globals_1.expect)(routeInfo[0]?.controller).toBe(TYPES.OrderController); (0, globals_1.expect)(routeInfo[0]?.endpoints[0]?.route).toBe('GET /api/order/'); (0, globals_1.expect)(routeInfo[0]?.endpoints[0]?.args).toBeUndefined(); (0, globals_1.expect)(routeInfo[0]?.endpoints[1]?.route).toBe('POST /api/order/'); (0, globals_1.expect)(routeInfo[0]?.endpoints[1]?.args).toBeUndefined(); }); }); //# sourceMappingURL=debug.test.js.map