diff --git a/api/src/user/controllers/auth.controller.spec.ts b/api/src/user/controllers/auth.controller.spec.ts index 0ddd26a1..60a3c345 100644 --- a/api/src/user/controllers/auth.controller.spec.ts +++ b/api/src/user/controllers/auth.controller.spec.ts @@ -6,24 +6,16 @@ * 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 { ISendMailOptions, MailerService } from '@nestjs-modules/mailer'; import { InternalServerErrorException, UnauthorizedException, } from '@nestjs/common'; import { BadRequestException } from '@nestjs/common/exceptions/bad-request.exception'; import { JwtService } from '@nestjs/jwt'; -import { MongooseModule } from '@nestjs/mongoose'; -import { ISendMailOptions, MailerService } from '@nestjs-modules/mailer'; import { SentMessageInfo } from 'nodemailer'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.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 { getRandom } from '@/utils/helpers/safeRandom'; import { installLanguageFixtures } from '@/utils/test/fixtures/language'; import { installUserFixtures } from '@/utils/test/fixtures/user'; @@ -32,23 +24,12 @@ 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 { UserCreateDto } from '../dto/user.dto'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { PermissionRepository } from '../repositories/permission.repository'; -import { RoleRepository } from '../repositories/role.repository'; -import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { Role, RoleModel } from '../schemas/role.schema'; -import { UserModel } from '../schemas/user.schema'; +import { Role } from '../schemas/role.schema'; import { InvitationService } from '../services/invitation.service'; -import { PermissionService } from '../services/permission.service'; import { RoleService } from '../services/role.service'; import { UserService } from '../services/user.service'; -import { ValidateAccountService } from '../services/validate-account.service'; import { LocalAuthController } from './auth.controller'; @@ -63,37 +44,17 @@ describe('AuthController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + models: ['PermissionModel'], + autoInjectFrom: ['all'], controllers: [LocalAuthController], imports: [ rootMongooseTestModule(async () => { await installLanguageFixtures(); await installUserFixtures(); }), - MongooseModule.forFeature([ - UserModel, - RoleModel, - PermissionModel, - InvitationModel, - AttachmentModel, - LanguageModel, - ]), ], providers: [ - UserService, - WebsocketGateway, - SocketEventDispatcherService, - AttachmentService, - AttachmentRepository, - UserRepository, - PermissionService, RoleService, - RoleRepository, - PermissionRepository, - InvitationRepository, - InvitationService, - LanguageRepository, - LanguageService, - JwtService, { provide: MailerService, useValue: { @@ -102,15 +63,6 @@ describe('AuthController', () => { }, }, }, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - ValidateAccountService, { provide: I18nService, useValue: { diff --git a/api/src/user/controllers/model.controller.spec.ts b/api/src/user/controllers/model.controller.spec.ts index 743d7d3c..dc169186 100644 --- a/api/src/user/controllers/model.controller.spec.ts +++ b/api/src/user/controllers/model.controller.spec.ts @@ -6,12 +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 { 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 { installModelFixtures, modelFixtures, @@ -22,20 +16,9 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { ModelRepository } from '../repositories/model.repository'; -import { PermissionRepository } from '../repositories/permission.repository'; -import { RoleRepository } from '../repositories/role.repository'; -import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { ModelFull, ModelModel } from '../schemas/model.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { RoleModel } from '../schemas/role.schema'; -import { UserModel } from '../schemas/user.schema'; +import { ModelFull } from '../schemas/model.schema'; import { ModelService } from '../services/model.service'; import { PermissionService } from '../services/permission.service'; -import { RoleService } from '../services/role.service'; -import { UserService } from '../services/user.service'; import { ModelController } from './model.controller'; @@ -46,39 +29,11 @@ describe('ModelController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + models: ['PermissionModel'], + autoInjectFrom: ['all'], controllers: [ModelController], - imports: [ - rootMongooseTestModule(installModelFixtures), - MongooseModule.forFeature([ - UserModel, - RoleModel, - PermissionModel, - InvitationModel, - ModelModel, - AttachmentModel, - ]), - ], - providers: [ - PermissionService, - AttachmentService, - AttachmentRepository, - ModelService, - ModelRepository, - UserService, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - PermissionRepository, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - ], + imports: [rootMongooseTestModule(installModelFixtures)], + providers: [PermissionService], }); [modelController, modelService, permissionService] = await getMocks([ ModelController, diff --git a/api/src/user/controllers/permission.controller.spec.ts b/api/src/user/controllers/permission.controller.spec.ts index 4869dccb..efc32950 100644 --- a/api/src/user/controllers/permission.controller.spec.ts +++ b/api/src/user/controllers/permission.controller.spec.ts @@ -6,9 +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 { NotFoundException } from '@nestjs/common'; -import { MongooseModule } from '@nestjs/mongoose'; import { installPermissionFixtures } from '@/utils/test/fixtures/permission'; import { @@ -18,18 +16,9 @@ import { import { buildTestingMocks } from '@/utils/test/utils'; import { PermissionCreateDto } from '../dto/permission.dto'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { ModelRepository } from '../repositories/model.repository'; -import { PermissionRepository } from '../repositories/permission.repository'; -import { RoleRepository } from '../repositories/role.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { Model, ModelModel } from '../schemas/model.schema'; -import { - Permission, - PermissionFull, - PermissionModel, -} from '../schemas/permission.schema'; -import { Role, RoleModel } from '../schemas/role.schema'; +import { Model } from '../schemas/model.schema'; +import { Permission, PermissionFull } from '../schemas/permission.schema'; +import { Role } from '../schemas/role.schema'; import { ModelService } from '../services/model.service'; import { PermissionService } from '../services/permission.service'; import { RoleService } from '../services/role.service'; @@ -50,33 +39,10 @@ describe('PermissionController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + models: ['InvitationModel'], + autoInjectFrom: ['controllers'], controllers: [PermissionController], - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ - PermissionModel, - ModelModel, - RoleModel, - InvitationModel, - ]), - ], - providers: [ - RoleService, - ModelService, - PermissionService, - PermissionRepository, - RoleRepository, - InvitationRepository, - ModelRepository, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - ], + imports: [rootMongooseTestModule(installPermissionFixtures)], }); [permissionController, roleService, modelService, permissionService] = await getMocks([ diff --git a/api/src/user/controllers/role.controller.spec.ts b/api/src/user/controllers/role.controller.spec.ts index 19ad536d..5c4ec8d9 100644 --- a/api/src/user/controllers/role.controller.spec.ts +++ b/api/src/user/controllers/role.controller.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 { CACHE_MANAGER } from '@nestjs/cache-manager'; import { ForbiddenException, NotFoundException } from '@nestjs/common'; -import { MongooseModule } from '@nestjs/mongoose'; import { Request } from 'express'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.service'; import { installPermissionFixtures } from '@/utils/test/fixtures/permission'; import { roleFixtures } from '@/utils/test/fixtures/role'; import { getPageQuery } from '@/utils/test/pagination'; @@ -24,14 +19,7 @@ import { import { buildTestingMocks } from '@/utils/test/utils'; import { RoleCreateDto, RoleUpdateDto } from '../dto/role.dto'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { PermissionRepository } from '../repositories/permission.repository'; -import { RoleRepository } from '../repositories/role.repository'; -import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { Role, RoleFull, RoleModel } from '../schemas/role.schema'; -import { UserModel } from '../schemas/user.schema'; +import { Role, RoleFull } from '../schemas/role.schema'; import { PermissionService } from '../services/permission.service'; import { RoleService } from '../services/role.service'; import { UserService } from '../services/user.service'; @@ -48,36 +36,11 @@ describe('RoleController', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + models: ['InvitationModel'], + autoInjectFrom: ['all'], controllers: [RoleController], - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ - RoleModel, - PermissionModel, - UserModel, - InvitationModel, - AttachmentModel, - ]), - ], - providers: [ - PermissionService, - UserService, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - PermissionRepository, - AttachmentService, - AttachmentRepository, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - ], + imports: [rootMongooseTestModule(installPermissionFixtures)], + providers: [PermissionService], }); [roleController, roleService, permissionService, userService] = await getMocks([ diff --git a/api/src/user/controllers/user.controller.spec.ts b/api/src/user/controllers/user.controller.spec.ts index cb1cc277..dc27e2eb 100644 --- a/api/src/user/controllers/user.controller.spec.ts +++ b/api/src/user/controllers/user.controller.spec.ts @@ -6,21 +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 { CACHE_MANAGER } from '@nestjs/cache-manager'; -import { ForbiddenException, NotFoundException } from '@nestjs/common'; -import { JwtModule, JwtService } from '@nestjs/jwt'; -import { MongooseModule } from '@nestjs/mongoose'; import { ISendMailOptions, MailerService } from '@nestjs-modules/mailer'; +import { ForbiddenException, NotFoundException } from '@nestjs/common'; +import { JwtService } from '@nestjs/jwt'; import { Session as ExpressSession } from 'express-session'; import { SentMessageInfo } from 'nodemailer'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.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 { IGNORED_TEST_FIELDS } from '@/utils/test/constants'; import { installLanguageFixtures } from '@/utils/test/fixtures/language'; import { installPermissionFixtures } from '@/utils/test/fixtures/permission'; @@ -38,19 +30,11 @@ import { UserEditProfileDto, UserUpdateStateAndRolesDto, } from '../dto/user.dto'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { PermissionRepository } from '../repositories/permission.repository'; -import { RoleRepository } from '../repositories/role.repository'; -import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { Role, RoleModel } from '../schemas/role.schema'; -import { User, UserFull, UserModel } from '../schemas/user.schema'; +import { Role } from '../schemas/role.schema'; +import { User, UserFull } from '../schemas/user.schema'; import { PasswordResetService } from '../services/passwordReset.service'; -import { PermissionService } from '../services/permission.service'; import { RoleService } from '../services/role.service'; import { UserService } from '../services/user.service'; -import { ValidateAccountService } from '../services/validate-account.service'; import { InvitationService } from './../services/invitation.service'; import { ReadWriteUserController } from './user.controller'; @@ -68,28 +52,15 @@ describe('UserController', () => { let jwtService: JwtService; beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['controllers'], controllers: [ReadWriteUserController], imports: [ rootMongooseTestModule(async () => { await installLanguageFixtures(); await installPermissionFixtures(); }), - MongooseModule.forFeature([ - UserModel, - RoleModel, - PermissionModel, - InvitationModel, - AttachmentModel, - LanguageModel, - ]), - JwtModule, ], providers: [ - RoleService, - UserService, - InvitationService, - PasswordResetService, - PermissionService, { provide: MailerService, useValue: { @@ -98,23 +69,6 @@ describe('UserController', () => { }, }, }, - UserRepository, - RoleRepository, - PermissionRepository, - InvitationRepository, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - AttachmentService, - AttachmentRepository, - LanguageService, - LanguageRepository, - ValidateAccountService, { provide: I18nService, useValue: { diff --git a/api/src/user/repositories/invitation.repository.spec.ts b/api/src/user/repositories/invitation.repository.spec.ts index 09715dbf..d09585c7 100644 --- a/api/src/user/repositories/invitation.repository.spec.ts +++ b/api/src/user/repositories/invitation.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 { PageQueryDto } from '@/utils/pagination/pagination-query.dto'; @@ -21,16 +21,9 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { - Invitation, - InvitationFull, - InvitationModel, -} from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { RoleModel } from '../schemas/role.schema'; +import { Invitation, InvitationFull } from '../schemas/invitation.schema'; import { InvitationRepository } from './invitation.repository'; -import { PermissionRepository } from './permission.repository'; import { RoleRepository } from './role.repository'; describe('InvitationRepository', () => { @@ -39,15 +32,10 @@ describe('InvitationRepository', () => { let invitationModel: Model; beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installInvitationFixtures), - MongooseModule.forFeature([ - RoleModel, - PermissionModel, - InvitationModel, - ]), - ], - providers: [RoleRepository, InvitationRepository, PermissionRepository], + models: ['PermissionModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installInvitationFixtures)], + providers: [RoleRepository, InvitationRepository], }); [roleRepository, invitationRepository, invitationModel] = await getMocks([ RoleRepository, diff --git a/api/src/user/repositories/model.repository.spec.ts b/api/src/user/repositories/model.repository.spec.ts index 0d809179..1ad0a6d4 100644 --- a/api/src/user/repositories/model.repository.spec.ts +++ b/api/src/user/repositories/model.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 { modelFixtures } from '@/utils/test/fixtures/model'; @@ -19,8 +19,8 @@ import { buildTestingMocks } from '@/utils/test/utils'; import { ModelRepository } from '../repositories/model.repository'; import { PermissionRepository } from '../repositories/permission.repository'; -import { ModelFull, ModelModel } from '../schemas/model.schema'; -import { Permission, PermissionModel } from '../schemas/permission.schema'; +import { ModelFull } from '../schemas/model.schema'; +import { Permission } from '../schemas/permission.schema'; import { Model as ModelType } from './../schemas/model.schema'; @@ -33,10 +33,9 @@ describe('ModelRepository', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ModelModel, PermissionModel]), - ], + autoInjectFrom: ['providers'], + models: ['PermissionModel'], + imports: [rootMongooseTestModule(installPermissionFixtures)], providers: [ModelRepository, PermissionRepository], }); [permissionRepository, modelRepository, modelModel] = await getMocks([ diff --git a/api/src/user/repositories/permission.repository.spec.ts b/api/src/user/repositories/permission.repository.spec.ts index 8e5ffbe2..a129789f 100644 --- a/api/src/user/repositories/permission.repository.spec.ts +++ b/api/src/user/repositories/permission.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 { @@ -22,18 +22,11 @@ import { buildTestingMocks } from '@/utils/test/utils'; import { ModelRepository } from '../repositories/model.repository'; import { PermissionRepository } from '../repositories/permission.repository'; import { RoleRepository } from '../repositories/role.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { ModelModel, Model as ModelSchema } from '../schemas/model.schema'; -import { - Permission, - PermissionFull, - PermissionModel, -} from '../schemas/permission.schema'; -import { Role, RoleModel } from '../schemas/role.schema'; +import { Model as ModelSchema } from '../schemas/model.schema'; +import { Permission, PermissionFull } from '../schemas/permission.schema'; +import { Role } from '../schemas/role.schema'; import { Action } from '../types/action.type'; -import { InvitationRepository } from './invitation.repository'; - describe('PermissionRepository', () => { let modelRepository: ModelRepository; let roleRepository: RoleRepository; @@ -44,21 +37,10 @@ describe('PermissionRepository', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ - ModelModel, - PermissionModel, - RoleModel, - InvitationModel, - ]), - ], - providers: [ - ModelRepository, - RoleRepository, - PermissionRepository, - InvitationRepository, - ], + models: ['InvitationModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installPermissionFixtures)], + providers: [ModelRepository, RoleRepository, PermissionRepository], }); [roleRepository, modelRepository, permissionRepository, permissionModel] = await getMocks([ diff --git a/api/src/user/repositories/role.repository.spec.ts b/api/src/user/repositories/role.repository.spec.ts index da573eb7..1a64b5c7 100644 --- a/api/src/user/repositories/role.repository.spec.ts +++ b/api/src/user/repositories/role.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 { installPermissionFixtures } from '@/utils/test/fixtures/permission'; @@ -20,13 +20,10 @@ import { buildTestingMocks } from '@/utils/test/utils'; import { PermissionRepository } from '../repositories/permission.repository'; import { RoleRepository } from '../repositories/role.repository'; import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { Role, RoleFull, RoleModel } from '../schemas/role.schema'; -import { User, UserModel } from '../schemas/user.schema'; +import { Role, RoleFull } from '../schemas/role.schema'; +import { User } from '../schemas/user.schema'; import { roleFixtures } from './../../utils/test/fixtures/role'; -import { InvitationRepository } from './invitation.repository'; describe('RoleRepository', () => { let roleRepository: RoleRepository; @@ -39,21 +36,10 @@ describe('RoleRepository', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ - UserModel, - PermissionModel, - RoleModel, - InvitationModel, - ]), - ], - providers: [ - UserRepository, - RoleRepository, - InvitationRepository, - PermissionRepository, - ], + models: ['UserModel', 'InvitationModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installPermissionFixtures)], + providers: [UserRepository, RoleRepository, PermissionRepository], }); [roleRepository, userRepository, permissionRepository, roleModel] = await getMocks([ diff --git a/api/src/user/repositories/user.repository.spec.ts b/api/src/user/repositories/user.repository.spec.ts index 4f148491..a7b2841b 100644 --- a/api/src/user/repositories/user.repository.spec.ts +++ b/api/src/user/repositories/user.repository.spec.ts @@ -6,11 +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 { MongooseModule, getModelToken } from '@nestjs/mongoose'; +import { getModelToken } from '@nestjs/mongoose'; import { Model } from 'mongoose'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; import { IGNORED_TEST_FIELDS } from '@/utils/test/constants'; import { installPermissionFixtures } from '@/utils/test/fixtures/permission'; import { userFixtures } from '@/utils/test/fixtures/user'; @@ -21,15 +19,10 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { PermissionRepository } from '../repositories/permission.repository'; import { RoleRepository } from '../repositories/role.repository'; import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { Role, RoleModel } from '../schemas/role.schema'; -import { User, UserFull, UserModel } from '../schemas/user.schema'; - -import { InvitationRepository } from './invitation.repository'; +import { Role } from '../schemas/role.schema'; +import { User, UserFull } from '../schemas/user.schema'; describe('UserRepository', () => { let roleRepository: RoleRepository; @@ -52,30 +45,10 @@ describe('UserRepository', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ - UserModel, - PermissionModel, - RoleModel, - InvitationModel, - AttachmentModel, - ]), - ], - providers: [ - UserRepository, - RoleRepository, - InvitationRepository, - PermissionRepository, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - ], + models: ['PermissionModel', 'InvitationModel', 'AttachmentModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installPermissionFixtures)], + providers: [UserRepository, RoleRepository], }); [roleRepository, userRepository, userModel] = await getMocks([ RoleRepository, diff --git a/api/src/user/services/auth.service.spec.ts b/api/src/user/services/auth.service.spec.ts index 5eb04552..e608d5ed 100644 --- a/api/src/user/services/auth.service.spec.ts +++ b/api/src/user/services/auth.service.spec.ts @@ -6,12 +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 { JwtService } from '@nestjs/jwt'; -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 { installUserFixtures } from '@/utils/test/fixtures/user'; import { closeInMongodConnection, @@ -19,17 +13,9 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { RoleRepository } from '../repositories/role.repository'; import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { RoleModel } from '../schemas/role.schema'; -import { UserModel } from '../schemas/user.schema'; import { AuthService } from './auth.service'; -import { RoleService } from './role.service'; -import { UserService } from './user.service'; describe('AuthService', () => { let authService: AuthService; @@ -37,27 +23,9 @@ describe('AuthService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installUserFixtures), - MongooseModule.forFeature([ - UserModel, - RoleModel, - PermissionModel, - InvitationModel, - AttachmentModel, - ]), - ], - providers: [ - AuthService, - UserService, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - JwtService, - AttachmentService, - AttachmentRepository, - ], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installUserFixtures)], + providers: [AuthService], }); [authService, userRepository] = await getMocks([ AuthService, diff --git a/api/src/user/services/invitation.service.spec.ts b/api/src/user/services/invitation.service.spec.ts index c59127a1..b3b66ef5 100644 --- a/api/src/user/services/invitation.service.spec.ts +++ b/api/src/user/services/invitation.service.spec.ts @@ -6,16 +6,11 @@ * 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 { JwtModule, JwtService } from '@nestjs/jwt'; -import { MongooseModule } from '@nestjs/mongoose'; import { ISendMailOptions, MailerService } from '@nestjs-modules/mailer'; +import { JwtModule, JwtService } from '@nestjs/jwt'; import { SentMessageInfo } from 'nodemailer'; -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 { IGNORED_TEST_FIELDS } from '@/utils/test/constants'; import { installInvitationFixtures, @@ -30,15 +25,9 @@ import { buildTestingMocks } from '@/utils/test/utils'; import { InvitationCreateDto } from '../dto/invitation.dto'; import { InvitationRepository } from '../repositories/invitation.repository'; -import { PermissionRepository } from '../repositories/permission.repository'; import { RoleRepository } from '../repositories/role.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { RoleModel } from '../schemas/role.schema'; import { InvitationService } from './invitation.service'; -import { PermissionService } from './permission.service'; -import { RoleService } from './role.service'; describe('InvitationService', () => { let invitationService: InvitationService; @@ -50,35 +39,24 @@ describe('InvitationService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + models: ['PermissionModel'], + autoInjectFrom: ['providers'], imports: [ rootMongooseTestModule(async () => { await installLanguageFixtures(); await installInvitationFixtures(); }), - MongooseModule.forFeature([ - RoleModel, - PermissionModel, - InvitationModel, - LanguageModel, - ]), JwtModule, ], providers: [ - PermissionService, - RoleService, - RoleRepository, - PermissionRepository, - InvitationRepository, InvitationService, - LanguageRepository, - LanguageService, + RoleRepository, { provide: I18nService, useValue: { t: jest.fn().mockImplementation((t) => t), }, }, - InvitationRepository, { provide: MailerService, useValue: { @@ -88,14 +66,6 @@ describe('InvitationService', () => { ), }, }, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, ], }); [ diff --git a/api/src/user/services/model.service.spec.ts b/api/src/user/services/model.service.spec.ts index 61b29466..3ef4ca26 100644 --- a/api/src/user/services/model.service.spec.ts +++ b/api/src/user/services/model.service.spec.ts @@ -6,8 +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 { modelFixtures } from '@/utils/test/fixtures/model'; import { installPermissionFixtures } from '@/utils/test/fixtures/permission'; import { @@ -18,8 +16,8 @@ import { buildTestingMocks } from '@/utils/test/utils'; import { ModelRepository } from '../repositories/model.repository'; import { PermissionRepository } from '../repositories/permission.repository'; -import { Model, ModelFull, ModelModel } from '../schemas/model.schema'; -import { Permission, PermissionModel } from '../schemas/permission.schema'; +import { Model, ModelFull } from '../schemas/model.schema'; +import { Permission } from '../schemas/permission.schema'; import { ModelService } from './model.service'; @@ -32,11 +30,10 @@ describe('ModelService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ModelModel, PermissionModel]), - ], - providers: [ModelService, ModelRepository, PermissionRepository], + models: ['PermissionModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installPermissionFixtures)], + providers: [ModelService, PermissionRepository], }); [modelService, permissionRepository, modelRepository] = await getMocks([ ModelService, diff --git a/api/src/user/services/passwordReset.service.spec.ts b/api/src/user/services/passwordReset.service.spec.ts index e7c66c59..c792d224 100644 --- a/api/src/user/services/passwordReset.service.spec.ts +++ b/api/src/user/services/passwordReset.service.spec.ts @@ -6,22 +6,15 @@ * 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 { JwtModule, JwtService } from '@nestjs/jwt'; -import { MongooseModule, getModelToken } from '@nestjs/mongoose'; import { ISendMailOptions, MailerService } from '@nestjs-modules/mailer'; +import { NotFoundException } from '@nestjs/common'; +import { JwtService } from '@nestjs/jwt'; +import { getModelToken } from '@nestjs/mongoose'; import { compareSync } from 'bcryptjs'; import { Model } from 'mongoose'; import { SentMessageInfo } from 'nodemailer'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.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 { installLanguageFixtures } from '@/utils/test/fixtures/language'; import { installUserFixtures, users } from '@/utils/test/fixtures/user'; import { @@ -30,17 +23,9 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { RoleRepository } from '../repositories/role.repository'; -import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { RoleModel } from '../schemas/role.schema'; -import { User, UserModel } from '../schemas/user.schema'; +import { User } from '../schemas/user.schema'; import { PasswordResetService } from './passwordReset.service'; -import { RoleService } from './role.service'; -import { UserService } from './user.service'; describe('PasswordResetService', () => { let passwordResetService: PasswordResetService; @@ -49,31 +34,14 @@ describe('PasswordResetService', () => { let userModel: Model; beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['providers'], imports: [ rootMongooseTestModule(async () => { await installLanguageFixtures(); await installUserFixtures(); }), - MongooseModule.forFeature([ - UserModel, - RoleModel, - PermissionModel, - AttachmentModel, - LanguageModel, - InvitationModel, - ]), - JwtModule, ], providers: [ - UserService, - UserRepository, - RoleService, - AttachmentService, - AttachmentRepository, - RoleRepository, - InvitationRepository, - LanguageService, - LanguageRepository, PasswordResetService, { provide: MailerService, @@ -90,14 +58,6 @@ describe('PasswordResetService', () => { t: jest.fn().mockImplementation((t) => t), }, }, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, ], }); [passwordResetService, mailerService, jwtService, userModel] = diff --git a/api/src/user/services/permission.service.spec.ts b/api/src/user/services/permission.service.spec.ts index 7f70ad9a..0bbe305f 100644 --- a/api/src/user/services/permission.service.spec.ts +++ b/api/src/user/services/permission.service.spec.ts @@ -6,9 +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 { CACHE_MANAGER } from '@nestjs/cache-manager'; -import { MongooseModule } from '@nestjs/mongoose'; - import { installPermissionFixtures, permissionFixtures, @@ -19,18 +16,12 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { InvitationRepository } from '../repositories/invitation.repository'; import { ModelRepository } from '../repositories/model.repository'; import { PermissionRepository } from '../repositories/permission.repository'; import { RoleRepository } from '../repositories/role.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { ModelModel, Model as ModelSchema } from '../schemas/model.schema'; -import { - Permission, - PermissionFull, - PermissionModel, -} from '../schemas/permission.schema'; -import { Role, RoleModel } from '../schemas/role.schema'; +import { Model as ModelSchema } from '../schemas/model.schema'; +import { Permission, PermissionFull } from '../schemas/permission.schema'; +import { Role } from '../schemas/role.schema'; import { Action } from '../types/action.type'; import { PermissionService } from './permission.service'; @@ -44,30 +35,10 @@ describe('PermissionService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ - ModelModel, - PermissionModel, - RoleModel, - InvitationModel, - ]), - ], - providers: [ - ModelRepository, - PermissionService, - RoleRepository, - InvitationRepository, - PermissionRepository, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - ], + models: ['InvitationModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installPermissionFixtures)], + providers: [PermissionService, RoleRepository, ModelRepository], }); [permissionService, roleRepository, modelRepository, permissionRepository] = await getMocks([ diff --git a/api/src/user/services/role.service.spec.ts b/api/src/user/services/role.service.spec.ts index 9d46651f..120ddeb8 100644 --- a/api/src/user/services/role.service.spec.ts +++ b/api/src/user/services/role.service.spec.ts @@ -6,8 +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 { installPermissionFixtures } from '@/utils/test/fixtures/permission'; import { getPageQuery } from '@/utils/test/pagination'; import { @@ -16,14 +14,12 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { InvitationRepository } from '../repositories/invitation.repository'; import { PermissionRepository } from '../repositories/permission.repository'; import { RoleRepository } from '../repositories/role.repository'; import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { Permission, PermissionModel } from '../schemas/permission.schema'; -import { Role, RoleFull, RoleModel } from '../schemas/role.schema'; -import { User, UserModel } from '../schemas/user.schema'; +import { Permission } from '../schemas/permission.schema'; +import { Role, RoleFull } from '../schemas/role.schema'; +import { User } from '../schemas/user.schema'; import { roleFixtures } from './../../utils/test/fixtures/role'; import { RoleService } from './role.service'; @@ -39,22 +35,10 @@ describe('RoleService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ - UserModel, - PermissionModel, - RoleModel, - InvitationModel, - ]), - ], - providers: [ - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - PermissionRepository, - ], + models: ['PermissionModel', 'InvitationModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installPermissionFixtures)], + providers: [RoleService, UserRepository, PermissionRepository], }); [roleService, roleRepository, userRepository, permissionRepository] = await getMocks([ diff --git a/api/src/user/services/user.service.spec.ts b/api/src/user/services/user.service.spec.ts index b5b4b882..74e56b20 100644 --- a/api/src/user/services/user.service.spec.ts +++ b/api/src/user/services/user.service.spec.ts @@ -6,12 +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 { 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 { IGNORED_TEST_FIELDS } from '@/utils/test/constants'; import { installPermissionFixtures } from '@/utils/test/fixtures/permission'; import { userFixtures } from '@/utils/test/fixtures/user'; @@ -22,17 +16,11 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { PermissionRepository } from '../repositories/permission.repository'; import { RoleRepository } from '../repositories/role.repository'; import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { Role, RoleModel } from '../schemas/role.schema'; -import { User, UserFull, UserModel } from '../schemas/user.schema'; +import { Role } from '../schemas/role.schema'; +import { User, UserFull } from '../schemas/user.schema'; -import { PermissionService } from './permission.service'; -import { RoleService } from './role.service'; import { UserService } from './user.service'; describe('UserService', () => { @@ -55,35 +43,10 @@ describe('UserService', () => { beforeAll(async () => { const { getMocks } = await buildTestingMocks({ - imports: [ - rootMongooseTestModule(installPermissionFixtures), - MongooseModule.forFeature([ - UserModel, - PermissionModel, - RoleModel, - InvitationModel, - AttachmentModel, - ]), - ], - providers: [ - UserService, - AttachmentService, - AttachmentRepository, - UserRepository, - PermissionService, - RoleService, - RoleRepository, - InvitationRepository, - PermissionRepository, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, - ], + models: ['PermissionModel', 'InvitationModel', 'AttachmentModel'], + autoInjectFrom: ['providers'], + imports: [rootMongooseTestModule(installPermissionFixtures)], + providers: [UserService, RoleRepository], }); [userService, roleRepository, userRepository] = await getMocks([ UserService, diff --git a/api/src/user/services/validate-account.service.spec.ts b/api/src/user/services/validate-account.service.spec.ts index cae6ab77..ea88db2d 100644 --- a/api/src/user/services/validate-account.service.spec.ts +++ b/api/src/user/services/validate-account.service.spec.ts @@ -6,19 +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 { CACHE_MANAGER } from '@nestjs/cache-manager'; -import { JwtModule } from '@nestjs/jwt'; -import { MongooseModule } from '@nestjs/mongoose'; import { ISendMailOptions, MailerService } from '@nestjs-modules/mailer'; import { SentMessageInfo } from 'nodemailer'; -import { AttachmentRepository } from '@/attachment/repositories/attachment.repository'; -import { AttachmentModel } from '@/attachment/schemas/attachment.schema'; -import { AttachmentService } from '@/attachment/services/attachment.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 { installLanguageFixtures } from '@/utils/test/fixtures/language'; import { installUserFixtures, users } from '@/utils/test/fixtures/user'; import { @@ -27,16 +18,6 @@ import { } from '@/utils/test/test'; import { buildTestingMocks } from '@/utils/test/utils'; -import { InvitationRepository } from '../repositories/invitation.repository'; -import { RoleRepository } from '../repositories/role.repository'; -import { UserRepository } from '../repositories/user.repository'; -import { InvitationModel } from '../schemas/invitation.schema'; -import { PermissionModel } from '../schemas/permission.schema'; -import { RoleModel } from '../schemas/role.schema'; -import { UserModel } from '../schemas/user.schema'; - -import { RoleService } from './role.service'; -import { UserService } from './user.service'; import { ValidateAccountService } from './validate-account.service'; describe('ValidateAccountService', () => { @@ -44,31 +25,16 @@ describe('ValidateAccountService', () => { let mailerService: MailerService; beforeAll(async () => { const { getMocks } = await buildTestingMocks({ + autoInjectFrom: ['providers'], imports: [ rootMongooseTestModule(async () => { await installLanguageFixtures(); await installUserFixtures(); }), - MongooseModule.forFeature([ - UserModel, - RoleModel, - PermissionModel, - InvitationModel, - AttachmentModel, - LanguageModel, - ]), - JwtModule, ], providers: [ - UserService, - AttachmentService, - AttachmentRepository, - UserRepository, - RoleService, - RoleRepository, - InvitationRepository, - LanguageService, - LanguageRepository, + ValidateAccountService, + { provide: MailerService, useValue: { @@ -78,21 +44,12 @@ describe('ValidateAccountService', () => { ), }, }, - ValidateAccountService, { provide: I18nService, useValue: { t: jest.fn().mockImplementation((t) => t), }, }, - { - provide: CACHE_MANAGER, - useValue: { - del: jest.fn(), - get: jest.fn(), - set: jest.fn(), - }, - }, ], }); [validateAccountService, mailerService] = await getMocks([