From b4de0e101531aee5608e092d9ccf92ca3cc6c679 Mon Sep 17 00:00:00 2001 From: Joanna Liana Date: Sat, 7 Jan 2023 17:19:51 +0100 Subject: [PATCH] Test calling Nest library from Express app --- express/libs/my-library/src/index.ts | 2 + .../libs/my-library/src/my-library.module.ts | 9 +++++ .../my-library/src/my-library.service.spec.ts | 19 +++++++++ .../libs/my-library/src/my-library.service.ts | 8 ++++ express/libs/my-library/tsconfig.lib.json | 9 +++++ express/nest-cli.json | 16 ++++++++ express/package.json | 1 + .../application/BookingQueryHandler.ts | 7 ++++ express/tsconfig.json | 39 ++++++++++++------- express/yarn.lock | 24 ++++++++++++ 10 files changed, 120 insertions(+), 14 deletions(-) create mode 100644 express/libs/my-library/src/index.ts create mode 100644 express/libs/my-library/src/my-library.module.ts create mode 100644 express/libs/my-library/src/my-library.service.spec.ts create mode 100644 express/libs/my-library/src/my-library.service.ts create mode 100644 express/libs/my-library/tsconfig.lib.json create mode 100644 express/nest-cli.json diff --git a/express/libs/my-library/src/index.ts b/express/libs/my-library/src/index.ts new file mode 100644 index 0000000..0cc2dba --- /dev/null +++ b/express/libs/my-library/src/index.ts @@ -0,0 +1,2 @@ +export * from './my-library.module'; +export * from './my-library.service'; diff --git a/express/libs/my-library/src/my-library.module.ts b/express/libs/my-library/src/my-library.module.ts new file mode 100644 index 0000000..fbba42a --- /dev/null +++ b/express/libs/my-library/src/my-library.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; + +import { MyLibraryService } from './my-library.service'; + +@Module({ + providers: [MyLibraryService], + exports: [MyLibraryService], +}) +export class MyLibraryModule {} diff --git a/express/libs/my-library/src/my-library.service.spec.ts b/express/libs/my-library/src/my-library.service.spec.ts new file mode 100644 index 0000000..bc5616b --- /dev/null +++ b/express/libs/my-library/src/my-library.service.spec.ts @@ -0,0 +1,19 @@ +import { Test, TestingModule } from '@nestjs/testing'; + +import { MyLibraryService } from './my-library.service'; + +describe('MyLibraryService', () => { + let service: MyLibraryService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [MyLibraryService], + }).compile(); + + service = module.get(MyLibraryService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/express/libs/my-library/src/my-library.service.ts b/express/libs/my-library/src/my-library.service.ts new file mode 100644 index 0000000..902f0b6 --- /dev/null +++ b/express/libs/my-library/src/my-library.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class MyLibraryService { + exec(): void { + console.log('HELLO FROM LIBRARY!'); + } +} diff --git a/express/libs/my-library/tsconfig.lib.json b/express/libs/my-library/tsconfig.lib.json new file mode 100644 index 0000000..072a806 --- /dev/null +++ b/express/libs/my-library/tsconfig.lib.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "../../dist/libs/my-library" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff --git a/express/nest-cli.json b/express/nest-cli.json new file mode 100644 index 0000000..774239c --- /dev/null +++ b/express/nest-cli.json @@ -0,0 +1,16 @@ +{ + "projects": { + "my-library": { + "type": "library", + "root": "libs/my-library", + "entryFile": "index", + "sourceRoot": "libs/my-library/src", + "compilerOptions": { + "tsConfigPath": "libs/my-library/tsconfig.lib.json" + } + } + }, + "compilerOptions": { + "webpack": true + } +} \ No newline at end of file diff --git a/express/package.json b/express/package.json index 1258547..4a7ee5d 100644 --- a/express/package.json +++ b/express/package.json @@ -39,6 +39,7 @@ "dependencies": { "@mikro-orm/core": "^5.5.0", "@mikro-orm/postgresql": "^5.5.0", + "@nestjs/common": "^9.2.1", "amqplib": "^0.10.3", "axios": "^1.1.3", "date-fns": "^2.29.3", diff --git a/express/src/bookings/useCases/listBookings/application/BookingQueryHandler.ts b/express/src/bookings/useCases/listBookings/application/BookingQueryHandler.ts index a75ffd1..a1d25c9 100644 --- a/express/src/bookings/useCases/listBookings/application/BookingQueryHandler.ts +++ b/express/src/bookings/useCases/listBookings/application/BookingQueryHandler.ts @@ -1,3 +1,4 @@ +import { MyLibraryService } from '../../../../../libs/my-library/src'; import { Events } from '../../../shared/domain/Events'; import { FindFreeRoom } from '../../../shared/domain/freeRoomFinder'; import { EventBus } from '../../../shared/infrastructure/EventBus'; @@ -22,6 +23,12 @@ export class BookingQueryHandler { } async freeRooms(arrival: Date, departure: Date): Promise { + console.log('WILL CALL EXEC'); + + new MyLibraryService().exec(); + + console.log('CALLED EXEC'); + const bookings = await this.registry.getAll(); return this.findFreeRoom(bookings, { diff --git a/express/tsconfig.json b/express/tsconfig.json index 240bdfb..b9fca28 100644 --- a/express/tsconfig.json +++ b/express/tsconfig.json @@ -1,14 +1,25 @@ -{ - "compilerOptions": { - "lib": ["ESNext"], - "target": "ES2022", - "module": "commonjs", - "moduleResolution": "node", - "outDir": "./build", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "esModuleInterop": true, - "sourceMap": true - } -} +{ + "compilerOptions": { + "lib": [ + "ESNext" + ], + "target": "ES2022", + "module": "commonjs", + "moduleResolution": "node", + "outDir": "./build", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true, + "sourceMap": true, + "baseUrl": "./", + "paths": { + "@app/my-library": [ + "libs/my-library/src" + ], + "@app/my-library/*": [ + "libs/my-library/src/*" + ] + } + } +} \ No newline at end of file diff --git a/express/yarn.lock b/express/yarn.lock index 9df6273..6d565b3 100644 --- a/express/yarn.lock +++ b/express/yarn.lock @@ -1187,6 +1187,15 @@ "@mikro-orm/knex" "~5.5.0" pg "8.8.0" +"@nestjs/common@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-9.2.1.tgz#24de19ee85a8f1747288980fe517b12753cf66ea" + integrity sha512-nZuo3oDsSSlC5mti/M2aCWTEIfHPGDXmBwWgPeCpRbrNz3IWd109rkajll+yxgidVjznAdBS9y00JkAVJblNYw== + dependencies: + iterare "1.2.1" + tslib "2.4.1" + uuid "9.0.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3168,6 +3177,11 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +iterare@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" + integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== + jest-changed-files@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" @@ -4753,6 +4767,11 @@ tslib@2.4.0, tslib@^2.1.0, tslib@~2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -4885,6 +4904,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"