fix: unit tests

This commit is contained in:
Mohamed Marrouchi
2024-09-21 19:43:04 +01:00
parent 7bc5270551
commit 93bb9ee04f
21 changed files with 87 additions and 72 deletions

View File

@@ -92,10 +92,8 @@ describe('ModelController', () => {
describe('find', () => {
it('should find models', async () => {
jest.spyOn(modelService, 'findAndPopulate');
const result = await modelController.find([], {});
expect(modelService.findAndPopulate).toHaveBeenCalledWith({}, [
'permissions',
]);
const result = await modelController.find(['permissions'], {});
expect(modelService.findAndPopulate).toHaveBeenCalledWith({});
expect(result).toEqualPayload(
modelFixtures.map((modelFixture) => ({
...modelFixture,
@@ -122,9 +120,7 @@ describe('ModelController', () => {
return acc;
}, []);
expect(modelService.findAndPopulate).toHaveBeenCalledWith({}, [
'permissions',
]);
expect(modelService.findAndPopulate).toHaveBeenCalledWith({});
expect(result).toEqualPayload(modelsWithPermissionsAndUsers);
});
});

View File

@@ -148,9 +148,7 @@ describe('UserController', () => {
it('should find one user and populate its roles', async () => {
jest.spyOn(userService, 'findOneAndPopulate');
const result = await userController.findOne(user.id, ['roles']);
expect(userService.findOneAndPopulate).toHaveBeenCalledWith(user.id, [
'roles',
]);
expect(userService.findOneAndPopulate).toHaveBeenCalledWith(user.id);
expect(result).toEqualPayload(
{
...userFixtures.find(({ username }) => username === 'admin'),
@@ -166,9 +164,7 @@ describe('UserController', () => {
it('should find users, and for each user populate the corresponding roles', async () => {
jest.spyOn(userService, 'findPageAndPopulate');
const result = await userService.findPageAndPopulate({}, pageQuery, [
'roles',
]);
const result = await userService.findPageAndPopulate({}, pageQuery);
const usersWithRoles = userFixtures.reduce((acc, currUser) => {
acc.push({
@@ -181,7 +177,6 @@ describe('UserController', () => {
expect(userService.findPageAndPopulate).toHaveBeenCalledWith(
{},
pageQuery,
['roles'],
);
expect(result).toEqualPayload(usersWithRoles, [
...IGNORED_FIELDS,

View File

@@ -23,7 +23,7 @@ import { Model as ModelType } from './../schemas/model.schema';
import { ModelRepository } from '../repositories/model.repository';
import { PermissionRepository } from '../repositories/permission.repository';
import { ModelModel } from '../schemas/model.schema';
import { PermissionModel, Permission } from '../schemas/permission.schema';
import { Permission, PermissionModel } from '../schemas/permission.schema';
describe('ModelRepository', () => {
let modelRepository: ModelRepository;
@@ -69,7 +69,7 @@ describe('ModelRepository', () => {
jest.spyOn(modelModel, 'find');
const allModels = await modelRepository.findAll();
const allPermissions = await permissionRepository.findAll();
const result = await modelRepository.findAndPopulate({}, ['permissions']);
const result = await modelRepository.findAndPopulate({});
const modelsWithPermissions = allModels.reduce((acc, currModel) => {
acc.push({
...currModel,

View File

@@ -13,6 +13,7 @@ import { MongooseModule, getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Model } from 'mongoose';
import { AttachmentModel } from '@/attachment/schemas/attachment.schema';
import { LoggerService } from '@/logger/logger.service';
import { IGNORED_TEST_FIELDS } from '@/utils/test/constants';
import { installPermissionFixtures } from '@/utils/test/fixtures/permission';
@@ -53,7 +54,12 @@ describe('UserRepository', () => {
const module: TestingModule = await Test.createTestingModule({
imports: [
rootMongooseTestModule(installPermissionFixtures),
MongooseModule.forFeature([UserModel, PermissionModel, RoleModel]),
MongooseModule.forFeature([
UserModel,
PermissionModel,
RoleModel,
AttachmentModel,
]),
],
providers: [
LoggerService,
@@ -85,9 +91,7 @@ describe('UserRepository', () => {
describe('findOneAndPopulate', () => {
it('should find one user and populate its role', async () => {
jest.spyOn(userModel, 'findById');
const result = await userRepository.findOneAndPopulate(user.id, [
'roles',
]);
const result = await userRepository.findOneAndPopulate(user.id);
expect(userModel.findById).toHaveBeenCalledWith(user.id);
expect(result).toEqualPayload(
{
@@ -106,9 +110,7 @@ describe('UserRepository', () => {
jest.spyOn(userRepository, 'findPageAndPopulate');
const allUsers = await userRepository.findAll();
const allRoles = await roleRepository.findAll();
const result = await userRepository.findPageAndPopulate({}, pageQuery, [
'roles',
]);
const result = await userRepository.findPageAndPopulate({}, pageQuery);
const usersWithRoles = allUsers.reduce((acc, currUser) => {
acc.push({
...currUser,

View File

@@ -12,10 +12,10 @@ import { Injectable } from '@nestjs/common';
import { BaseSeeder } from '@/utils/generics/base-seeder';
import { ModelRepository } from '../repositories/model.repository';
import { Model } from '../schemas/model.schema';
import { Model, ModelFull, ModelPopulate } from '../schemas/model.schema';
@Injectable()
export class ModelSeeder extends BaseSeeder<Model> {
export class ModelSeeder extends BaseSeeder<Model, ModelPopulate, ModelFull> {
constructor(private readonly modelRepository: ModelRepository) {
super(modelRepository);
}

View File

@@ -12,10 +12,18 @@ import { Injectable } from '@nestjs/common';
import { BaseSeeder } from '@/utils/generics/base-seeder';
import { PermissionRepository } from '../repositories/permission.repository';
import { Permission } from '../schemas/permission.schema';
import {
Permission,
PermissionFull,
PermissionPopulate,
} from '../schemas/permission.schema';
@Injectable()
export class PermissionSeeder extends BaseSeeder<Permission> {
export class PermissionSeeder extends BaseSeeder<
Permission,
PermissionPopulate,
PermissionFull
> {
constructor(private readonly permissionRepository: PermissionRepository) {
super(permissionRepository);
}

View File

@@ -12,10 +12,10 @@ import { Injectable } from '@nestjs/common';
import { BaseSeeder } from '@/utils/generics/base-seeder';
import { RoleRepository } from '../repositories/role.repository';
import { Role } from '../schemas/role.schema';
import { Role, RoleFull, RolePopulate } from '../schemas/role.schema';
@Injectable()
export class RoleSeeder extends BaseSeeder<Role> {
export class RoleSeeder extends BaseSeeder<Role, RolePopulate, RoleFull> {
constructor(private readonly roleRepository: RoleRepository) {
super(roleRepository);
}

View File

@@ -12,10 +12,10 @@ import { Injectable } from '@nestjs/common';
import { BaseSeeder } from '@/utils/generics/base-seeder';
import { UserRepository } from '../repositories/user.repository';
import { User } from '../schemas/user.schema';
import { User, UserFull, UserPopulate } from '../schemas/user.schema';
@Injectable()
export class UserSeeder extends BaseSeeder<User> {
export class UserSeeder extends BaseSeeder<User, UserPopulate, UserFull> {
constructor(private readonly userRepository: UserRepository) {
super(userRepository);
}

View File

@@ -70,7 +70,7 @@ describe('ModelService', () => {
jest.spyOn(modelRepository, 'findAndPopulate');
const models = await modelRepository.findAll();
const permissions = await permissionRepository.findAll();
const result = await modelService.findAndPopulate({}, ['permissions']);
const result = await modelService.findAndPopulate({});
const modelsWithPermissions = models.reduce((acc, currModel) => {
acc.push({
...currModel,
@@ -80,9 +80,10 @@ describe('ModelService', () => {
});
return acc;
}, []);
expect(modelRepository.findAndPopulate).toHaveBeenCalledWith({}, [
'permissions',
]);
expect(modelRepository.findAndPopulate).toHaveBeenCalledWith(
{},
undefined,
);
expect(result).toEqualPayload(modelsWithPermissions);
});
});

View File

@@ -99,10 +99,8 @@ describe('UserService', () => {
describe('findOneAndPopulate', () => {
it('should find one user and populate its role', async () => {
jest.spyOn(userRepository, 'findOneAndPopulate');
const result = await userService.findOneAndPopulate(user.id, ['roles']);
expect(userRepository.findOneAndPopulate).toHaveBeenCalledWith(user.id, [
'roles',
]);
const result = await userService.findOneAndPopulate(user.id);
expect(userRepository.findOneAndPopulate).toHaveBeenCalledWith(user.id);
expect(result).toEqualPayload(
{
...userFixtures.find(({ username }) => username === 'admin'),
@@ -118,9 +116,7 @@ describe('UserService', () => {
const pageQuery = getPageQuery<User>({ sort: ['_id', 'asc'] });
jest.spyOn(userRepository, 'findPageAndPopulate');
const allUsers = await userRepository.findAll();
const result = await userService.findPageAndPopulate({}, pageQuery, [
'roles',
]);
const result = await userService.findPageAndPopulate({}, pageQuery);
const usersWithRoles = allUsers.reduce((acc, currUser) => {
acc.push({
...currUser,
@@ -132,7 +128,6 @@ describe('UserService', () => {
expect(userRepository.findPageAndPopulate).toHaveBeenCalledWith(
{},
pageQuery,
['roles'],
);
expect(result).toEqualPayload(usersWithRoles);
});