From 3d6994ecda848e569676a3879300bf5f54fc9609 Mon Sep 17 00:00:00 2001 From: yassinedorbozgithub Date: Mon, 16 Jun 2025 07:13:17 +0100 Subject: [PATCH] feat(api): add automatic DI to Chat module --- .../chat/controllers/block.controller.spec.ts | 92 +---------- .../controllers/category.contoller.spec.ts | 55 +------ .../context-var.controller.spec.ts | 18 ++- .../chat/controllers/label.controller.spec.ts | 47 +----- .../controllers/message.controller.spec.ts | 90 +---------- .../controllers/subscriber.controller.spec.ts | 52 +------ .../repositories/block.repository.spec.ts | 24 ++- .../repositories/label.repository.spec.ts | 12 +- .../repositories/message.repository.spec.ts | 12 +- .../subscriber.repository.spec.ts | 30 +--- api/src/chat/services/block.service.spec.ts | 96 +----------- api/src/chat/services/bot.service.spec.ts | 143 +----------------- .../services/conversation.service.spec.ts | 36 +---- api/src/chat/services/label.service.spec.ts | 29 +--- api/src/chat/services/message.service.spec.ts | 47 +----- .../chat/services/subscriber.service.spec.ts | 49 +----- 16 files changed, 104 insertions(+), 728 deletions(-) diff --git a/api/src/chat/controllers/block.controller.spec.ts b/api/src/chat/controllers/block.controller.spec.ts index 05a952dd..2e3ce5fc 100644 --- a/api/src/chat/controllers/block.controller.spec.ts +++ b/api/src/chat/controllers/block.controller.spec.ts @@ -6,34 +6,9 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { CACHE_MANAGER } from '@nestjs/cache-manager'; import { NotFoundException } from '@nestjs/common'; -import { MongooseModule } from '@nestjs/mongoose'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; -import { ContentRepository } from '@/cms/repositories/content.repository'; -import { ContentModel } from '@/cms/schemas/content.schema'; -import { ContentService } from '@/cms/services/content.service'; -import { LanguageRepository } from '@/i18n/repositories/language.repository'; -import { LanguageModel } from '@/i18n/schemas/language.schema'; import { I18nService } from '@/i18n/services/i18n.service'; -import { LanguageService } from '@/i18n/services/language.service'; -import { NlpService } from '@/nlp/services/nlp.service'; -import { PluginService } from '@/plugins/plugins.service'; -import { SettingService } from '@/setting/services/setting.service'; -import { InvitationRepository } from '@/user/repositories/invitation.repository'; -import { PermissionRepository } from '@/user/repositories/permission.repository'; -import { RoleRepository } from '@/user/repositories/role.repository'; -import { UserRepository } from '@/user/repositories/user.repository'; -import { InvitationModel } from '@/user/schemas/invitation.schema'; -import { PermissionModel } from '@/user/schemas/permission.schema'; -import { RoleModel } from '@/user/schemas/role.schema'; -import { UserModel } from '@/user/schemas/user.schema'; -import { PermissionService } from '@/user/services/permission.service'; -import { RoleService } from '@/user/services/role.service'; -import { UserService } from '@/user/services/user.service'; import { IGNORED_TEST_FIELDS } from '@/utils/test/constants'; import { getUpdateOneError } from '@/utils/test/errors/messages'; import { @@ -47,17 +22,12 @@ import { import { buildTestingMocks } from '@/utils/test/utils'; import { BlockCreateDto, BlockUpdateDto } from '../dto/block.dto'; -import { BlockRepository } from '../repositories/block.repository'; -import { CategoryRepository } from '../repositories/category.repository'; -import { LabelRepository } from '../repositories/label.repository'; -import { Block, BlockModel } from '../schemas/block.schema'; -import { LabelModel } from '../schemas/label.schema'; +import { Block } from '../schemas/block.schema'; import { PayloadType } from '../schemas/types/button'; import { BlockService } from '../services/block.service'; import { CategoryService } from '../services/category.service'; -import { LabelService } from '../services/label.service'; -import { Category, CategoryModel } from './../schemas/category.schema'; +import { Category } from './../schemas/category.schema'; import { BlockController } from './block.controller'; describe('BlockController', () => { @@ -80,70 +50,16 @@ describe('BlockController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['controllers'], controllers: [BlockController], - imports: [ - rootMongooseTestModule(installBlockFixtures), - MongooseModule.forFeature([ - BlockModel, - LabelModel, - CategoryModel, - ContentModel, - InvitationModel, - AttachmentModel, - UserModel, - RoleModel, - PermissionModel, - LanguageModel, - ]), - ], + imports: [rootMongooseTestModule(installBlockFixtures)], providers: [ - BlockRepository, - LabelRepository, - CategoryRepository, - ContentRepository, - AttachmentRepository, - UserRepository, - RoleRepository, - PermissionRepository, - InvitationRepository, - LanguageRepository, - BlockService, - LabelService, - CategoryService, - ContentService, - AttachmentService, - UserService, - RoleService, - PermissionService, - LanguageService, - PluginService, { provide: I18nService, useValue: { t: jest.fn().mockImplementation((t) => t), }, }, - { - provide: SettingService, - useValue: { - getConfig: jest.fn(() => ({ - chatbot: { lang: { default: 'fr' } }, - })), - getSettings: jest.fn(() => ({})), - }, - }, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - { - provide: NlpService, - useValue: {}, - }, ], }); [blockController, blockService, categoryService] = await getMocks([ diff --git a/api/src/chat/controllers/category.contoller.spec.ts b/api/src/chat/controllers/category.contoller.spec.ts index f8a8063b..05bea1b6 100644 --- a/api/src/chat/controllers/category.contoller.spec.ts +++ b/api/src/chat/controllers/category.contoller.spec.ts @@ -7,17 +7,8 @@ */ import { BadRequestException, NotFoundException } from '@nestjs/common'; -import { MongooseModule } from '@nestjs/mongoose'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; -import { ContentRepository } from '@/cms/repositories/content.repository'; -import { ContentModel } from '@/cms/schemas/content.schema'; -import { ContentService } from '@/cms/services/content.service'; import { I18nService } from '@/i18n/services/i18n.service'; -import { PluginService } from '@/plugins/plugins.service'; -import { SettingService } from '@/setting/services/setting.service'; import { categoryFixtures, installCategoryFixtures, @@ -31,14 +22,9 @@ import { import { buildTestingMocks } from '@/utils/test/utils'; import { CategoryCreateDto, CategoryUpdateDto } from '../dto/category.dto'; -import { BlockRepository } from '../repositories/block.repository'; -import { CategoryRepository } from '../repositories/category.repository'; -import { BlockModel } from '../schemas/block.schema'; -import { LabelModel } from '../schemas/label.schema'; -import { BlockService } from '../services/block.service'; import { CategoryService } from '../services/category.service'; -import { Category, CategoryModel } from './../schemas/category.schema'; +import { Category } from './../schemas/category.schema'; import { CategoryController } from './category.controller'; describe('CategoryController', () => { @@ -49,51 +35,16 @@ describe('CategoryController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['controllers'], controllers: [CategoryController], - imports: [ - rootMongooseTestModule(installCategoryFixtures), - MongooseModule.forFeature([ - BlockModel, - LabelModel, - CategoryModel, - ContentModel, - AttachmentModel, - ]), - ], + imports: [rootMongooseTestModule(installCategoryFixtures)], providers: [ - BlockRepository, - CategoryRepository, - ContentRepository, - AttachmentRepository, - BlockService, - CategoryService, - ContentService, - AttachmentService, - { - provide: PluginService, - useValue: {}, - }, { provide: I18nService, useValue: { t: jest.fn().mockImplementation((t) => t), }, }, - { - provide: SettingService, - useValue: { - getConfig: jest.fn(() => ({ - chatbot: { lang: { default: 'fr' } }, - })), - getSettings: jest.fn(() => ({})), - }, - }, - { - provide: BlockService, - useValue: { - findOne: jest.fn(), - }, - }, ], }); [categoryService, categoryController] = await getMocks([ diff --git a/api/src/chat/controllers/context-var.controller.spec.ts b/api/src/chat/controllers/context-var.controller.spec.ts index 0ac9d023..3f0e4635 100644 --- a/api/src/chat/controllers/context-var.controller.spec.ts +++ b/api/src/chat/controllers/context-var.controller.spec.ts @@ -7,8 +7,8 @@ */ import { BadRequestException, NotFoundException } from '@nestjs/common'; -import { MongooseModule } from '@nestjs/mongoose'; +import { I18nService } from '@/i18n/services/i18n.service'; import { getUpdateOneError } from '@/utils/test/errors/messages'; import { contextVarFixtures, @@ -26,8 +26,7 @@ import { ContextVarCreateDto, ContextVarUpdateDto, } from '../dto/context-var.dto'; -import { ContextVarRepository } from '../repositories/context-var.repository'; -import { ContextVar, ContextVarModel } from '../schemas/context-var.schema'; +import { ContextVar } from '../schemas/context-var.schema'; import { ContextVarService } from '../services/context-var.service'; import { ContextVarController } from './context-var.controller'; @@ -40,12 +39,17 @@ describe('ContextVarController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['controllers'], controllers: [ContextVarController], - imports: [ - rootMongooseTestModule(installContextVarFixtures), - MongooseModule.forFeature([ContextVarModel]), + imports: [rootMongooseTestModule(installContextVarFixtures)], + providers: [ + { + provide: I18nService, + useValue: { + t: jest.fn().mockImplementation((t) => t), + }, + }, ], - providers: [ContextVarService, ContextVarRepository], }); [contextVarController, contextVarService] = await getMocks([ ContextVarController, diff --git a/api/src/chat/controllers/label.controller.spec.ts b/api/src/chat/controllers/label.controller.spec.ts index 1136cf40..1964b0be 100644 --- a/api/src/chat/controllers/label.controller.spec.ts +++ b/api/src/chat/controllers/label.controller.spec.ts @@ -7,20 +7,7 @@ */ import { BadRequestException, NotFoundException } from '@nestjs/common'; -import { MongooseModule } from '@nestjs/mongoose'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; -import { InvitationRepository } from '@/user/repositories/invitation.repository'; -import { RoleRepository } from '@/user/repositories/role.repository'; -import { UserRepository } from '@/user/repositories/user.repository'; -import { InvitationModel } from '@/user/schemas/invitation.schema'; -import { PermissionModel } from '@/user/schemas/permission.schema'; -import { RoleModel } from '@/user/schemas/role.schema'; -import { UserModel } from '@/user/schemas/user.schema'; -import { RoleService } from '@/user/services/role.service'; -import { UserService } from '@/user/services/user.service'; import { NOT_FOUND_ID } from '@/utils/constants/mock'; import { IGNORED_TEST_FIELDS } from '@/utils/test/constants'; import { getUpdateOneError } from '@/utils/test/errors/messages'; @@ -35,10 +22,7 @@ import { import { buildTestingMocks } from '@/utils/test/utils'; import { LabelCreateDto, LabelUpdateDto } from '../dto/label.dto'; -import { LabelRepository } from '../repositories/label.repository'; -import { SubscriberRepository } from '../repositories/subscriber.repository'; -import { Label, LabelModel } from '../schemas/label.schema'; -import { SubscriberModel } from '../schemas/subscriber.schema'; +import { Label } from '../schemas/label.schema'; import { LabelService } from '../services/label.service'; import { SubscriberService } from '../services/subscriber.service'; @@ -54,33 +38,10 @@ describe('LabelController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['all'], controllers: [LabelController], - imports: [ - rootMongooseTestModule(installSubscriberFixtures), - MongooseModule.forFeature([ - LabelModel, - UserModel, - RoleModel, - PermissionModel, - SubscriberModel, - InvitationModel, - AttachmentModel, - ]), - ], - providers: [ - LabelController, - LabelService, - LabelRepository, - UserService, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - SubscriberService, - SubscriberRepository, - AttachmentService, - AttachmentRepository, - ], + imports: [rootMongooseTestModule(installSubscriberFixtures)], + providers: [SubscriberService], }); [labelService, subscriberService, labelController] = await getMocks([ LabelService, diff --git a/api/src/chat/controllers/message.controller.spec.ts b/api/src/chat/controllers/message.controller.spec.ts index 0bc9e2a5..45ef0bb5 100644 --- a/api/src/chat/controllers/message.controller.spec.ts +++ b/api/src/chat/controllers/message.controller.spec.ts @@ -6,27 +6,7 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { CACHE_MANAGER } from '@nestjs/cache-manager'; -import { MongooseModule } from '@nestjs/mongoose'; - -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; -import { ChannelService } from '@/channel/channel.service'; -import { MenuRepository } from '@/cms/repositories/menu.repository'; -import { MenuModel } from '@/cms/schemas/menu.schema'; -import { MenuService } from '@/cms/services/menu.service'; -import { I18nService } from '@/i18n/services/i18n.service'; -import { NlpService } from '@/nlp/services/nlp.service'; -import { SettingService } from '@/setting/services/setting.service'; -import { InvitationRepository } from '@/user/repositories/invitation.repository'; -import { RoleRepository } from '@/user/repositories/role.repository'; -import { UserRepository } from '@/user/repositories/user.repository'; -import { InvitationModel } from '@/user/schemas/invitation.schema'; -import { PermissionModel } from '@/user/schemas/permission.schema'; -import { RoleModel } from '@/user/schemas/role.schema'; -import { User, UserModel } from '@/user/schemas/user.schema'; -import { RoleService } from '@/user/services/role.service'; +import { User } from '@/user/schemas/user.schema'; import { UserService } from '@/user/services/user.service'; import { installMessageFixtures, @@ -39,10 +19,8 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { MessageRepository } from '../repositories/message.repository'; -import { SubscriberRepository } from '../repositories/subscriber.repository'; -import { Message, MessageModel } from '../schemas/message.schema'; -import { Subscriber, SubscriberModel } from '../schemas/subscriber.schema'; +import { Message } from '../schemas/message.schema'; +import { Subscriber } from '../schemas/subscriber.schema'; import { MessageService } from '../services/message.service'; import { SubscriberService } from '../services/subscriber.service'; @@ -63,66 +41,10 @@ describe('MessageController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['all'], controllers: [MessageController], - imports: [ - rootMongooseTestModule(installMessageFixtures), - MongooseModule.forFeature([ - SubscriberModel, - MessageModel, - UserModel, - RoleModel, - InvitationModel, - PermissionModel, - AttachmentModel, - MenuModel, - ]), - ], - providers: [ - MessageController, - MessageRepository, - MessageService, - SubscriberService, - UserService, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - SubscriberRepository, - ChannelService, - AttachmentService, - AttachmentRepository, - MenuService, - MenuRepository, - { - provide: I18nService, - useValue: { - t: jest.fn().mockImplementation((t) => t), - }, - }, - { - provide: NlpService, - useValue: { - getNLP: jest.fn(() => undefined), - }, - }, - { - provide: SettingService, - useValue: { - getConfig: jest.fn(() => ({ - chatbot: { lang: { default: 'fr' } }, - })), - getSettings: jest.fn(() => ({})), - }, - }, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - ], + imports: [rootMongooseTestModule(installMessageFixtures)], + providers: [UserService], }); [messageService, userService, subscriberService, messageController] = await getMocks([ diff --git a/api/src/chat/controllers/subscriber.controller.spec.ts b/api/src/chat/controllers/subscriber.controller.spec.ts index 9c514302..818fa030 100644 --- a/api/src/chat/controllers/subscriber.controller.spec.ts +++ b/api/src/chat/controllers/subscriber.controller.spec.ts @@ -6,19 +6,7 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule } from '@nestjs/mongoose'; - -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; -import { InvitationRepository } from '@/user/repositories/invitation.repository'; -import { RoleRepository } from '@/user/repositories/role.repository'; -import { UserRepository } from '@/user/repositories/user.repository'; -import { InvitationModel } from '@/user/schemas/invitation.schema'; -import { PermissionModel } from '@/user/schemas/permission.schema'; -import { RoleModel } from '@/user/schemas/role.schema'; -import { User, UserModel } from '@/user/schemas/user.schema'; -import { RoleService } from '@/user/services/role.service'; +import { User } from '@/user/schemas/user.schema'; import { installSubscriberFixtures, subscriberFixtures, @@ -30,13 +18,9 @@ import { rootMongooseTestModule, } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { SocketEventDispatcherService } from '@/websocket/services/socket-event-dispatcher.service'; -import { WebsocketGateway } from '@/websocket/websocket.gateway'; -import { LabelRepository } from '../repositories/label.repository'; -import { SubscriberRepository } from '../repositories/subscriber.repository'; -import { Label, LabelModel } from '../schemas/label.schema'; -import { Subscriber, SubscriberModel } from '../schemas/subscriber.schema'; +import { Label } from '../schemas/label.schema'; +import { Subscriber } from '../schemas/subscriber.schema'; import { SubscriberService } from '../services/subscriber.service'; import { UserService } from './../../user/services/user.service'; @@ -55,34 +39,10 @@ describe('SubscriberController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['all'], controllers: [SubscriberController], - imports: [ - rootMongooseTestModule(installSubscriberFixtures), - MongooseModule.forFeature([ - SubscriberModel, - LabelModel, - UserModel, - RoleModel, - InvitationModel, - PermissionModel, - AttachmentModel, - ]), - ], - providers: [ - SubscriberRepository, - SubscriberService, - LabelService, - LabelRepository, - UserService, - WebsocketGateway, - SocketEventDispatcherService, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - AttachmentService, - AttachmentRepository, - ], + imports: [rootMongooseTestModule(installSubscriberFixtures)], + providers: [LabelService, UserService], }); [subscriberService, labelService, userService, subscriberController] = await getMocks([ diff --git a/api/src/chat/repositories/block.repository.spec.ts b/api/src/chat/repositories/block.repository.spec.ts index f207b710..13c167d4 100644 --- a/api/src/chat/repositories/block.repository.spec.ts +++ b/api/src/chat/repositories/block.repository.spec.ts @@ -6,9 +6,10 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule, getModelToken } from '@nestjs/mongoose'; +import { getModelToken } from '@nestjs/mongoose'; import { Model } from 'mongoose'; +import { I18nService } from '@/i18n/services/i18n.service'; import { blockFixtures, installBlockFixtures, @@ -19,9 +20,8 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { Block, BlockModel } from '../schemas/block.schema'; -import { Category, CategoryModel } from '../schemas/category.schema'; -import { LabelModel } from '../schemas/label.schema'; +import { Block } from '../schemas/block.schema'; +import { Category } from '../schemas/category.schema'; import { BlockRepository } from './block.repository'; import { CategoryRepository } from './category.repository'; @@ -39,11 +39,19 @@ describe('BlockRepository', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installBlockFixtures), - MongooseModule.forFeature([BlockModel, CategoryModel, LabelModel]), + models: ['LabelModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installBlockFixtures)], + providers: [ + BlockRepository, + CategoryRepository, + { + provide: I18nService, + useValue: { + t: jest.fn().mockImplementation((t) => t), + }, + }, ], - providers: [BlockRepository, CategoryRepository], }); [blockRepository, categoryRepository, blockModel] = await getMocks([ BlockRepository, diff --git a/api/src/chat/repositories/label.repository.spec.ts b/api/src/chat/repositories/label.repository.spec.ts index a04eb2bc..df13f9e0 100644 --- a/api/src/chat/repositories/label.repository.spec.ts +++ b/api/src/chat/repositories/label.repository.spec.ts @@ -6,7 +6,7 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule, getModelToken } from '@nestjs/mongoose'; +import { getModelToken } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { labelFixtures } from '@/utils/test/fixtures/label'; @@ -19,8 +19,8 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { Label, LabelFull, LabelModel } from '../schemas/label.schema'; -import { Subscriber, SubscriberModel } from '../schemas/subscriber.schema'; +import { Label, LabelFull } from '../schemas/label.schema'; +import { Subscriber } from '../schemas/subscriber.schema'; import { LabelRepository } from './label.repository'; import { SubscriberRepository } from './subscriber.repository'; @@ -33,10 +33,8 @@ describe('LabelRepository', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installSubscriberFixtures), - MongooseModule.forFeature([LabelModel, SubscriberModel]), - ], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installSubscriberFixtures)], providers: [LabelRepository, SubscriberRepository], }); [labelRepository, subscriberRepository, labelModel] = await getMocks([ diff --git a/api/src/chat/repositories/message.repository.spec.ts b/api/src/chat/repositories/message.repository.spec.ts index 784df2cd..d03b1f2d 100644 --- a/api/src/chat/repositories/message.repository.spec.ts +++ b/api/src/chat/repositories/message.repository.spec.ts @@ -6,11 +6,10 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule, getModelToken } from '@nestjs/mongoose'; +import { getModelToken } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { UserRepository } from '@/user/repositories/user.repository'; -import { UserModel } from '@/user/schemas/user.schema'; import { installMessageFixtures, messageFixtures, @@ -22,8 +21,7 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { Message, MessageModel } from '../schemas/message.schema'; -import { SubscriberModel } from '../schemas/subscriber.schema'; +import { Message } from '../schemas/message.schema'; import { AnyMessage } from '../schemas/types/message'; import { MessageRepository } from './message.repository'; @@ -37,10 +35,8 @@ describe('MessageRepository', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installMessageFixtures), - MongooseModule.forFeature([MessageModel, SubscriberModel, UserModel]), - ], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installMessageFixtures)], providers: [MessageRepository, SubscriberRepository, UserRepository], }); [messageRepository, userRepository, subscriberRepository, messageModel] = diff --git a/api/src/chat/repositories/subscriber.repository.spec.ts b/api/src/chat/repositories/subscriber.repository.spec.ts index e34dee65..8bb01b21 100644 --- a/api/src/chat/repositories/subscriber.repository.spec.ts +++ b/api/src/chat/repositories/subscriber.repository.spec.ts @@ -6,17 +6,13 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule, getModelToken } from '@nestjs/mongoose'; +import { getModelToken } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { - Attachment, - AttachmentModel, -} from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; +import { Attachment } from '@/attachment/schemas/attachment.schema'; import { UserRepository } from '@/user/repositories/user.repository'; -import { User, UserModel } from '@/user/schemas/user.schema'; +import { User } from '@/user/schemas/user.schema'; import { installSubscriberFixtures, subscriberFixtures, @@ -29,12 +25,8 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { Label, LabelModel } from '../schemas/label.schema'; -import { - Subscriber, - SubscriberFull, - SubscriberModel, -} from '../schemas/subscriber.schema'; +import { Label } from '../schemas/label.schema'; +import { Subscriber, SubscriberFull } from '../schemas/subscriber.schema'; import { LabelRepository } from './label.repository'; import { SubscriberRepository } from './subscriber.repository'; @@ -53,20 +45,12 @@ describe('SubscriberRepository', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installSubscriberFixtures), - MongooseModule.forFeature([ - SubscriberModel, - LabelModel, - UserModel, - AttachmentModel, - ]), - ], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installSubscriberFixtures)], providers: [ SubscriberRepository, LabelRepository, UserRepository, - AttachmentService, AttachmentRepository, ], }); diff --git a/api/src/chat/services/block.service.spec.ts b/api/src/chat/services/block.service.spec.ts index 0988e6de..f4ab21ba 100644 --- a/api/src/chat/services/block.service.spec.ts +++ b/api/src/chat/services/block.service.spec.ts @@ -6,47 +6,19 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { CACHE_MANAGER } from '@nestjs/cache-manager'; -import { MongooseModule } from '@nestjs/mongoose'; - -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; import { subscriberWithLabels, subscriberWithoutLabels, } from '@/channel/lib/__test__/subscriber.mock'; import { ButtonType, PayloadType } from '@/chat/schemas/types/button'; -import { ContentTypeRepository } from '@/cms/repositories/content-type.repository'; -import { ContentRepository } from '@/cms/repositories/content.repository'; -import { ContentTypeModel } from '@/cms/schemas/content-type.schema'; -import { Content, ContentModel } from '@/cms/schemas/content.schema'; +import { Content } from '@/cms/schemas/content.schema'; import { ContentTypeService } from '@/cms/services/content-type.service'; import { ContentService } from '@/cms/services/content.service'; import WebChannelHandler from '@/extensions/channels/web/index.channel'; import { WEB_CHANNEL_NAME } from '@/extensions/channels/web/settings'; import { Web } from '@/extensions/channels/web/types'; import WebEventWrapper from '@/extensions/channels/web/wrapper'; -import { HelperService } from '@/helper/helper.service'; -import { LanguageRepository } from '@/i18n/repositories/language.repository'; -import { LanguageModel } from '@/i18n/schemas/language.schema'; import { I18nService } from '@/i18n/services/i18n.service'; -import { LanguageService } from '@/i18n/services/language.service'; -import { NlpEntityRepository } from '@/nlp/repositories/nlp-entity.repository'; -import { NlpSampleEntityRepository } from '@/nlp/repositories/nlp-sample-entity.repository'; -import { NlpSampleRepository } from '@/nlp/repositories/nlp-sample.repository'; -import { NlpValueRepository } from '@/nlp/repositories/nlp-value.repository'; -import { NlpEntityModel } from '@/nlp/schemas/nlp-entity.schema'; -import { NlpSampleEntityModel } from '@/nlp/schemas/nlp-sample-entity.schema'; -import { NlpSampleModel } from '@/nlp/schemas/nlp-sample.schema'; -import { NlpValueModel } from '@/nlp/schemas/nlp-value.schema'; -import { NlpEntityService } from '@/nlp/services/nlp-entity.service'; -import { NlpSampleEntityService } from '@/nlp/services/nlp-sample-entity.service'; -import { NlpSampleService } from '@/nlp/services/nlp-sample.service'; -import { NlpValueService } from '@/nlp/services/nlp-value.service'; -import { NlpService } from '@/nlp/services/nlp.service'; -import { PluginService } from '@/plugins/plugins.service'; -import { SettingService } from '@/setting/services/setting.service'; import { FALLBACK_DEFAULT_NLU_PENALTY_FACTOR } from '@/utils/constants/nlp'; import { blockFixtures, @@ -83,9 +55,8 @@ import { import { buildTestingMocks } from '@/utils/test/utils'; import { BlockRepository } from '../repositories/block.repository'; -import { Block, BlockFull, BlockModel } from '../schemas/block.schema'; -import { Category, CategoryModel } from '../schemas/category.schema'; -import { LabelModel } from '../schemas/label.schema'; +import { Block, BlockFull } from '../schemas/block.schema'; +import { Category } from '../schemas/category.schema'; import { Subscriber } from '../schemas/subscriber.schema'; import { FileType } from '../schemas/types/attachment'; import { Context } from '../schemas/types/context'; @@ -97,7 +68,6 @@ import { QuickReplyType } from '../schemas/types/quick-reply'; import { CategoryRepository } from './../repositories/category.repository'; import { BlockService } from './block.service'; -import { CategoryService } from './category.service'; function makeMockBlock(overrides: Partial): Block { return { @@ -135,53 +105,19 @@ describe('BlockService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + models: ['LabelModel'], + autoInjectFrom: ['providers'], imports: [ rootMongooseTestModule(async () => { await installContentFixtures(); await installBlockFixtures(); await installNlpValueFixtures(); }), - MongooseModule.forFeature([ - BlockModel, - CategoryModel, - ContentTypeModel, - ContentModel, - AttachmentModel, - LabelModel, - LanguageModel, - NlpEntityModel, - NlpSampleEntityModel, - NlpValueModel, - NlpSampleModel, - ]), ], providers: [ - BlockRepository, - CategoryRepository, - ContentTypeRepository, - ContentRepository, - AttachmentRepository, - LanguageRepository, BlockService, - CategoryService, ContentTypeService, - ContentService, - AttachmentService, - LanguageService, - NlpEntityRepository, - NlpValueRepository, - NlpSampleRepository, - NlpSampleEntityRepository, - NlpEntityService, - NlpValueService, - NlpSampleService, - NlpSampleEntityService, - NlpService, - HelperService, - { - provide: PluginService, - useValue: {}, - }, + CategoryRepository, { provide: I18nService, useValue: { @@ -190,26 +126,6 @@ describe('BlockService', () => { }), }, }, - { - provide: SettingService, - useValue: { - getConfig: jest.fn(() => ({ - chatbot: { lang: { default: 'fr' } }, - })), - getSettings: jest.fn(() => ({ - contact: { company_name: 'Your company name' }, - chatbot_settings: { default_nlu_penalty_factor: 0.95 }, - })), - }, - }, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, ], }); [ diff --git a/api/src/chat/services/bot.service.spec.ts b/api/src/chat/services/bot.service.spec.ts index 366ae7f3..fe786040 100644 --- a/api/src/chat/services/bot.service.spec.ts +++ b/api/src/chat/services/bot.service.spec.ts @@ -6,48 +6,14 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { CACHE_MANAGER } from '@nestjs/cache-manager'; import { EventEmitter2 } from '@nestjs/event-emitter'; -import { JwtModule } from '@nestjs/jwt'; -import { MongooseModule } from '@nestjs/mongoose'; +import { JwtService } from '@nestjs/jwt'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; -import { ChannelService } from '@/channel/channel.service'; -import { ContentTypeRepository } from '@/cms/repositories/content-type.repository'; -import { ContentRepository } from '@/cms/repositories/content.repository'; -import { MenuRepository } from '@/cms/repositories/menu.repository'; -import { ContentTypeModel } from '@/cms/schemas/content-type.schema'; -import { ContentModel } from '@/cms/schemas/content.schema'; -import { MenuModel } from '@/cms/schemas/menu.schema'; -import { ContentTypeService } from '@/cms/services/content-type.service'; -import { ContentService } from '@/cms/services/content.service'; -import { MenuService } from '@/cms/services/menu.service'; import { webEventText } from '@/extensions/channels/web/__test__/events.mock'; import WebChannelHandler from '@/extensions/channels/web/index.channel'; import { WEB_CHANNEL_NAME } from '@/extensions/channels/web/settings'; import WebEventWrapper from '@/extensions/channels/web/wrapper'; -import { HelperService } from '@/helper/helper.service'; -import { LanguageRepository } from '@/i18n/repositories/language.repository'; -import { LanguageModel } from '@/i18n/schemas/language.schema'; import { I18nService } from '@/i18n/services/i18n.service'; -import { LanguageService } from '@/i18n/services/language.service'; -import { NlpEntityRepository } from '@/nlp/repositories/nlp-entity.repository'; -import { NlpSampleEntityRepository } from '@/nlp/repositories/nlp-sample-entity.repository'; -import { NlpSampleRepository } from '@/nlp/repositories/nlp-sample.repository'; -import { NlpValueRepository } from '@/nlp/repositories/nlp-value.repository'; -import { NlpEntityModel } from '@/nlp/schemas/nlp-entity.schema'; -import { NlpSampleEntityModel } from '@/nlp/schemas/nlp-sample-entity.schema'; -import { NlpSampleModel } from '@/nlp/schemas/nlp-sample.schema'; -import { NlpValueModel } from '@/nlp/schemas/nlp-value.schema'; -import { NlpEntityService } from '@/nlp/services/nlp-entity.service'; -import { NlpSampleEntityService } from '@/nlp/services/nlp-sample-entity.service'; -import { NlpSampleService } from '@/nlp/services/nlp-sample.service'; -import { NlpValueService } from '@/nlp/services/nlp-value.service'; -import { NlpService } from '@/nlp/services/nlp.service'; -import { PluginService } from '@/plugins/plugins.service'; -import { SettingService } from '@/setting/services/setting.service'; import { installBlockFixtures } from '@/utils/test/fixtures/block'; import { installContentFixtures } from '@/utils/test/fixtures/content'; import { installSubscriberFixtures } from '@/utils/test/fixtures/subscriber'; @@ -63,33 +29,13 @@ import { rootMongooseTestModule, } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { SocketEventDispatcherService } from '@/websocket/services/socket-event-dispatcher.service'; -import { WebsocketGateway } from '@/websocket/websocket.gateway'; -import { BlockRepository } from '../repositories/block.repository'; -import { ContextVarRepository } from '../repositories/context-var.repository'; -import { ConversationRepository } from '../repositories/conversation.repository'; -import { MessageRepository } from '../repositories/message.repository'; -import { SubscriberRepository } from '../repositories/subscriber.repository'; -import { BlockFull, BlockModel } from '../schemas/block.schema'; -import { CategoryModel } from '../schemas/category.schema'; -import { ContextVarModel } from '../schemas/context-var.schema'; -import { - Conversation, - ConversationFull, - ConversationModel, -} from '../schemas/conversation.schema'; -import { LabelModel } from '../schemas/label.schema'; -import { MessageModel } from '../schemas/message.schema'; -import { SubscriberModel } from '../schemas/subscriber.schema'; +import { BlockFull } from '../schemas/block.schema'; +import { Conversation, ConversationFull } from '../schemas/conversation.schema'; -import { CategoryRepository } from './../repositories/category.repository'; import { BlockService } from './block.service'; import { BotService } from './bot.service'; -import { CategoryService } from './category.service'; -import { ContextVarService } from './context-var.service'; import { ConversationService } from './conversation.service'; -import { MessageService } from './message.service'; import { SubscriberService } from './subscriber.service'; describe('BotService', () => { @@ -102,102 +48,25 @@ describe('BotService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + models: ['LabelModel', 'CategoryModel'], + autoInjectFrom: ['providers'], imports: [ rootMongooseTestModule(async () => { await installSubscriberFixtures(); await installContentFixtures(); await installBlockFixtures(); }), - MongooseModule.forFeature([ - BlockModel, - CategoryModel, - ContentTypeModel, - ContentModel, - AttachmentModel, - LabelModel, - ConversationModel, - SubscriberModel, - MessageModel, - MenuModel, - ContextVarModel, - LanguageModel, - NlpEntityModel, - NlpSampleEntityModel, - NlpValueModel, - NlpSampleModel, - ]), - JwtModule, ], providers: [ - BlockRepository, - CategoryRepository, - WebsocketGateway, - SocketEventDispatcherService, - ConversationRepository, - ContentTypeRepository, - ContentRepository, - AttachmentRepository, - SubscriberRepository, - MessageRepository, - MenuRepository, - LanguageRepository, - ContextVarRepository, - NlpEntityRepository, - NlpSampleEntityRepository, - NlpValueRepository, - NlpSampleRepository, - BlockService, - CategoryService, - ContentTypeService, - ContentService, - AttachmentService, - SubscriberService, - ConversationService, + JwtService, BotService, - ChannelService, - MessageService, - MenuService, WebChannelHandler, - ContextVarService, - LanguageService, - NlpEntityService, - NlpValueService, - NlpSampleService, - NlpSampleEntityService, - NlpService, - { - provide: HelperService, - useValue: {}, - }, - { - provide: PluginService, - useValue: {}, - }, { provide: I18nService, useValue: { t: jest.fn().mockImplementation((t) => t), }, }, - { - provide: SettingService, - useValue: { - getConfig: jest.fn(() => ({ - chatbot: { lang: { default: 'fr' } }, - })), - getSettings: jest.fn(() => ({ - contact: { company_name: 'Your company name' }, - })), - }, - }, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, ], }); [ diff --git a/api/src/chat/services/conversation.service.spec.ts b/api/src/chat/services/conversation.service.spec.ts index e3a8ebc5..3dddf2d4 100644 --- a/api/src/chat/services/conversation.service.spec.ts +++ b/api/src/chat/services/conversation.service.spec.ts @@ -6,12 +6,8 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule } from '@nestjs/mongoose'; - -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; import EventWrapper from '@/channel/lib/EventWrapper'; +import { I18nService } from '@/i18n/services/i18n.service'; import { installContextVarFixtures } from '@/utils/test/fixtures/contextvar'; import { installConversationTypeFixtures } from '@/utils/test/fixtures/conversation'; import { @@ -21,16 +17,9 @@ import { import { buildTestingMocks } from '@/utils/test/utils'; import { VIEW_MORE_PAYLOAD } from '../helpers/constants'; -import { ContextVarRepository } from '../repositories/context-var.repository'; -import { ConversationRepository } from '../repositories/conversation.repository'; -import { SubscriberRepository } from '../repositories/subscriber.repository'; import { Block } from '../schemas/block.schema'; -import { ContextVarModel } from '../schemas/context-var.schema'; -import { ConversationModel } from '../schemas/conversation.schema'; -import { SubscriberModel } from '../schemas/subscriber.schema'; import { OutgoingMessageFormat } from '../schemas/types/message'; -import { ContextVarService } from './context-var.service'; import { ConversationService } from './conversation.service'; import { SubscriberService } from './subscriber.service'; @@ -45,30 +34,21 @@ describe('ConversationService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['providers'], imports: [ rootMongooseTestModule(async () => { await installContextVarFixtures(); await installConversationTypeFixtures(); }), - MongooseModule.forFeature([ - // LabelModel, - SubscriberModel, - ConversationModel, - AttachmentModel, - ContextVarModel, - ]), ], providers: [ - // LabelService, - // LabelRepository, - AttachmentService, - SubscriberService, ConversationService, - ContextVarService, - AttachmentRepository, - SubscriberRepository, - ConversationRepository, - ContextVarRepository, + { + provide: I18nService, + useValue: { + t: jest.fn().mockImplementation((t) => t), + }, + }, ], }); [conversationService, subscriberService] = await getMocks([ diff --git a/api/src/chat/services/label.service.spec.ts b/api/src/chat/services/label.service.spec.ts index 589bd33f..f5077966 100644 --- a/api/src/chat/services/label.service.spec.ts +++ b/api/src/chat/services/label.service.spec.ts @@ -6,11 +6,6 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule } from '@nestjs/mongoose'; - -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; import { installLabelFixtures, labelFixtures, @@ -24,12 +19,11 @@ import { import { buildTestingMocks } from '@/utils/test/utils'; import { LabelRepository } from '../repositories/label.repository'; -import { Label, LabelFull, LabelModel } from '../schemas/label.schema'; -import { Subscriber, SubscriberModel } from '../schemas/subscriber.schema'; +import { Label, LabelFull } from '../schemas/label.schema'; +import { Subscriber } from '../schemas/subscriber.schema'; import { SubscriberRepository } from './../repositories/subscriber.repository'; import { LabelService } from './label.service'; -import { SubscriberService } from './subscriber.service'; describe('LabelService', () => { let labelRepository: LabelRepository; @@ -41,22 +35,9 @@ describe('LabelService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installLabelFixtures), - MongooseModule.forFeature([ - LabelModel, - SubscriberModel, - AttachmentModel, - ]), - ], - providers: [ - LabelService, - LabelRepository, - SubscriberService, - AttachmentService, - AttachmentRepository, - SubscriberRepository, - ], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installLabelFixtures)], + providers: [LabelService, SubscriberRepository], }); [labelService, labelRepository, subscriberRepository] = await getMocks([ LabelService, diff --git a/api/src/chat/services/message.service.spec.ts b/api/src/chat/services/message.service.spec.ts index 1e3ad2ff..68deeb4a 100644 --- a/api/src/chat/services/message.service.spec.ts +++ b/api/src/chat/services/message.service.spec.ts @@ -6,20 +6,8 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule } from '@nestjs/mongoose'; - -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; -import { InvitationRepository } from '@/user/repositories/invitation.repository'; -import { RoleRepository } from '@/user/repositories/role.repository'; import { UserRepository } from '@/user/repositories/user.repository'; -import { InvitationModel } from '@/user/schemas/invitation.schema'; -import { PermissionModel } from '@/user/schemas/permission.schema'; -import { RoleModel } from '@/user/schemas/role.schema'; -import { User, UserModel } from '@/user/schemas/user.schema'; -import { RoleService } from '@/user/services/role.service'; -import { UserService } from '@/user/services/user.service'; +import { User } from '@/user/schemas/user.schema'; import { installMessageFixtures, messageFixtures, @@ -36,12 +24,11 @@ import { Room } from '@/websocket/types'; import { WebsocketGateway } from '@/websocket/websocket.gateway'; import { MessageRepository } from '../repositories/message.repository'; -import { Message, MessageModel } from '../schemas/message.schema'; -import { Subscriber, SubscriberModel } from '../schemas/subscriber.schema'; +import { Message } from '../schemas/message.schema'; +import { Subscriber } from '../schemas/subscriber.schema'; import { SubscriberRepository } from './../repositories/subscriber.repository'; import { MessageService } from './message.service'; -import { SubscriberService } from './subscriber.service'; describe('MessageService', () => { let messageRepository: MessageRepository; @@ -66,31 +53,9 @@ describe('MessageService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installMessageFixtures), - MongooseModule.forFeature([ - UserModel, - RoleModel, - PermissionModel, - InvitationModel, - SubscriberModel, - MessageModel, - AttachmentModel, - ]), - ], - providers: [ - AttachmentService, - AttachmentRepository, - UserService, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - SubscriberService, - SubscriberRepository, - MessageService, - MessageRepository, - ], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installMessageFixtures)], + providers: [MessageService, SubscriberRepository, UserRepository], }); [messageService, messageRepository, subscriberRepository, userRepository] = await getMocks([ diff --git a/api/src/chat/services/subscriber.service.spec.ts b/api/src/chat/services/subscriber.service.spec.ts index 1613582f..717c262c 100644 --- a/api/src/chat/services/subscriber.service.spec.ts +++ b/api/src/chat/services/subscriber.service.spec.ts @@ -6,14 +6,9 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import { MongooseModule } from '@nestjs/mongoose'; import mime from 'mime'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { - Attachment, - AttachmentModel, -} from '@/attachment/schemas/attachment.schema'; +import { Attachment } from '@/attachment/schemas/attachment.schema'; import { AttachmentService } from '@/attachment/services/attachment.service'; import { AttachmentAccess, @@ -21,15 +16,8 @@ import { AttachmentFile, AttachmentResourceRef, } from '@/attachment/types'; -import { InvitationRepository } from '@/user/repositories/invitation.repository'; -import { RoleRepository } from '@/user/repositories/role.repository'; import { UserRepository } from '@/user/repositories/user.repository'; -import { InvitationModel } from '@/user/schemas/invitation.schema'; -import { PermissionModel } from '@/user/schemas/permission.schema'; -import { RoleModel } from '@/user/schemas/role.schema'; -import { User, UserModel } from '@/user/schemas/user.schema'; -import { RoleService } from '@/user/services/role.service'; -import { UserService } from '@/user/services/user.service'; +import { User } from '@/user/schemas/user.schema'; import { installSubscriberFixtures } from '@/utils/test/fixtures/subscriber'; import { getPageQuery } from '@/utils/test/pagination'; import { sortRowsBy } from '@/utils/test/sort'; @@ -44,10 +32,9 @@ import { WebsocketGateway } from '@/websocket/websocket.gateway'; import { LabelRepository } from '../repositories/label.repository'; import { SubscriberRepository } from '../repositories/subscriber.repository'; -import { Label, LabelModel } from '../schemas/label.schema'; -import { Subscriber, SubscriberModel } from '../schemas/subscriber.schema'; +import { Label } from '../schemas/label.schema'; +import { Subscriber } from '../schemas/subscriber.schema'; -import { LabelService } from './label.service'; import { SubscriberService } from './subscriber.service'; jest.mock('uuid', () => ({ v4: jest.fn(() => 'test-uuid') })); @@ -71,31 +58,9 @@ describe('SubscriberService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installSubscriberFixtures), - MongooseModule.forFeature([ - SubscriberModel, - LabelModel, - UserModel, - RoleModel, - InvitationModel, - PermissionModel, - AttachmentModel, - ]), - ], - providers: [ - SubscriberService, - SubscriberRepository, - LabelService, - LabelRepository, - UserService, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - AttachmentService, - AttachmentRepository, - ], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installSubscriberFixtures)], + providers: [SubscriberService, LabelRepository, UserRepository], }); [ labelRepository,