Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server
1 result
Show changes
Showing
with 420 additions and 249 deletions
import { HttpModule } from '@nestjs/axios';
import { HttpStatus } from '@nestjs/common';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { Types } from 'mongoose';
import { UsersServiceMock } from '../../../test/mock/services/user.mock.service';
import { ConfigurationModule } from '../../configuration/configuration.module';
......@@ -9,7 +9,6 @@ import { Employer } from '../schemas/employer.schema';
import { EmployerService } from '../services/employer.service';
import { UsersService } from '../services/users.service';
import { EmployerController } from './employer.controller';
import { CreateEmployerDto } from '../dto/create-employer.dto';
describe('EmployerController', () => {
let employerController: EmployerController;
......@@ -32,7 +31,7 @@ describe('EmployerController', () => {
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [ConfigurationModule, HttpModule],
providers: [
{
......@@ -134,7 +133,7 @@ describe('EmployerController', () => {
const req = { user: { _id: '6036721022462b001334c4bb' }, role: 0 };
try {
await employerController.createEmployer({ name: 'Sopra' }, req);
expect;
expect(true).toBe(false);
} catch (e) {
expect(e.message).toBe('Employer already exist');
expect(e.status).toBe(HttpStatus.UNPROCESSABLE_ENTITY);
......
......@@ -34,8 +34,6 @@ export class EmployerController {
/**
* Find all employer. If search is given as param, filter on it. Otherwise return everything
* @param query {Query}
* @returns {Employer[]}
*/
@Get()
public async findAll(@Query() query?: { search: string }): Promise<Employer[]> {
......@@ -49,8 +47,6 @@ export class EmployerController {
/**
* Create new employer if does not exist
* @param newEmployer {CreateEmployerDto}
* @returns {Employer}
*/
@Post()
@UseGuards(JwtAuthGuard)
......@@ -74,7 +70,6 @@ export class EmployerController {
/**
* Init or reset search index for employer
* @returns {Employer[]}
*/
@Post('searchIndex')
@UseGuards(JwtAuthGuard, RolesGuard)
......@@ -137,8 +132,6 @@ export class EmployerController {
/**
* Delete Employer if exist
* @param employer {CreateEmployerDto} - Employer to delete
* @returns {Employer}
*/
@Delete(':id')
@UseGuards(JwtAuthGuard, RolesGuard)
......
import { HttpModule } from '@nestjs/axios';
import { HttpStatus } from '@nestjs/common';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { Types } from 'mongoose';
import { ConfigurationModule } from '../../configuration/configuration.module';
import { CreateJobDto } from '../dto/create-job.dto';
......@@ -34,7 +34,7 @@ describe('JobsController', () => {
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [ConfigurationModule, HttpModule],
providers: [
{
......@@ -151,6 +151,7 @@ describe('JobsController', () => {
const req = { user: { _id: '6036721022462b001334c4bb', role: 0 } };
try {
await jobsController.createJob(req, { name: 'Dev', hasPersonalOffer: true, jobsGroup: null });
expect(true).toBe(false);
} catch (e) {
expect(e.message).toBe('Job already exist');
expect(e.status).toBe(HttpStatus.UNPROCESSABLE_ENTITY);
......
......@@ -42,8 +42,6 @@ export class JobsController {
/**
* Create a new job
* @param job {CreateJobDto}
* @returns {Job}
*/
@Post()
@UseGuards(JwtAuthGuard)
......
import { HttpModule } from '@nestjs/axios';
import { HttpStatus } from '@nestjs/common';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { Types } from 'mongoose';
import { ConfigurationModule } from '../../configuration/configuration.module';
import { CreateJobsGroupsDto } from '../dto/create-jobsGroups.dto';
......@@ -28,7 +28,7 @@ describe('JobsGroupsController', () => {
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [ConfigurationModule, HttpModule],
providers: [
{
......@@ -56,34 +56,19 @@ describe('JobsGroupsController', () => {
describe('findAll', () => {
it('should findAll', async () => {
jobsGroupsServiceMock.findAll.mockResolvedValue([
{
_id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
name: 'Pilotage de projet',
},
{
_id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
name: 'Coordination',
},
]);
const reply = await jobsGroupsController.findAll();
expect(reply.length).toBe(2);
await jobsGroupsController.findAll();
expect(jobsGroupsServiceMock.findAll).toHaveBeenCalled();
});
});
describe('createJobsGroups', () => {
it('should create job group `Dev`', async () => {
const newJobsGroups: CreateJobsGroupsDto = {
name: 'Dev',
};
const newCreatedJobsGroups: JobsGroups = {
name: 'Dev',
};
jobsGroupsServiceMock.findByName.mockResolvedValueOnce(null);
jobsGroupsServiceMock.create.mockResolvedValueOnce(newCreatedJobsGroups);
const createReply = await jobsGroupsController.createJobsGroups(newJobsGroups);
expect(createReply).toEqual(newCreatedJobsGroups);
describe('findAllWithJobs', () => {
it('should findAll with jobs', async () => {
await jobsGroupsController.findAllWithJobs();
expect(jobsGroupsServiceMock.findAll).toHaveBeenCalledWith(true);
});
});
describe('createJobsGroups', () => {
it('should throw error on already existing job group `Dev`', async () => {
const newJobsGroups: CreateJobsGroupsDto = {
name: 'Dev',
......@@ -97,9 +82,22 @@ describe('JobsGroupsController', () => {
expect(true).toBe(false);
} catch (e) {
expect(e.message).toBe('Job group already exist');
expect(e.status).toBe(422);
expect(e.status).toBe(HttpStatus.UNPROCESSABLE_ENTITY);
}
});
it('should create job group `Dev`', async () => {
const newJobsGroups: CreateJobsGroupsDto = {
name: 'Dev',
};
const newCreatedJobsGroups: JobsGroups = {
name: 'Dev',
};
jobsGroupsServiceMock.findByName.mockResolvedValueOnce(null);
jobsGroupsServiceMock.create.mockResolvedValueOnce(newCreatedJobsGroups);
await jobsGroupsController.createJobsGroups(newJobsGroups);
expect(jobsGroupsServiceMock.create).toHaveBeenCalled();
});
});
describe('Edit Job Group', () => {
......@@ -118,14 +116,15 @@ describe('JobsGroupsController', () => {
deletedCount: 1,
});
it('should delete job group', async () => {
jobsGroupsServiceMock.findOne.mockResolvedValueOnce({
_id: new Types.ObjectId('6231aefe76598527c8d0b5ba'),
name: 'Dev',
});
jobServiceMock.getJobsGroupsAttachedJobs.mockResolvedValueOnce([]);
const reply = await jobsGroupsController.deleteJobsGroups({ id: '6231aefe76598527c8d0b5ba' });
expect(reply).toBeTruthy();
it('should not be able to find job group', async () => {
jobsGroupsServiceMock.findOne.mockResolvedValueOnce(null);
try {
await jobsGroupsController.deleteJobsGroups({ id: '6231aefe76598527c8d0b5ba' });
expect(true).toBe(false);
} catch (e) {
expect(e.message).toEqual('Job group not found');
expect(e.status).toEqual(HttpStatus.NOT_FOUND);
}
});
it('should not delete job group if a job is linked', async () => {
......@@ -142,5 +141,15 @@ describe('JobsGroupsController', () => {
expect(e.status).toEqual(HttpStatus.FORBIDDEN);
}
});
it('should delete job group', async () => {
jobsGroupsServiceMock.findOne.mockResolvedValueOnce({
_id: new Types.ObjectId('6231aefe76598527c8d0b5ba'),
name: 'Dev',
});
jobServiceMock.getJobsGroupsAttachedJobs.mockResolvedValueOnce([]);
await jobsGroupsController.deleteJobsGroups({ id: '6231aefe76598527c8d0b5ba' });
expect(jobsGroupsServiceMock.deleteOne).toHaveBeenCalled();
});
});
});
......@@ -50,8 +50,6 @@ export class JobsGroupsController {
/**
* Create a new jobsGroups
* @param jobsGroups {CreateJobsGroupsDto}
* @returns {jobsGroups}
*/
@Post()
@UseGuards(JwtAuthGuard)
......@@ -83,7 +81,6 @@ export class JobsGroupsController {
@Roles('admin')
@ApiParam({ name: 'id', type: String, required: true })
public async deleteJobsGroups(@Param() params): Promise<JobsGroups> {
// look for job group
const jobsGroups = await this.jobsGroupsService.findOne(params.id);
if (!jobsGroups) {
throw new HttpException('Job group not found', HttpStatus.NOT_FOUND);
......
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { multipleUsers } from '../../../test/mock/data/users.mock.data';
import { mockJwtAuthGuard } from '../../../test/mock/guards/jwt-auth.mock.guard';
import { mockRoleGuard } from '../../../test/mock/guards/role.mock.guard';
......@@ -22,7 +22,7 @@ describe('UserRegistryController', () => {
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [ConfigurationModule],
providers: [
{
......
......@@ -3,7 +3,7 @@ import { ApiBearerAuth, ApiBody, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard';
import { Roles } from '../decorators/roles.decorator';
import { RolesGuard } from '../guards/roles.guard';
import { UserRegistryPaginatedResponse } from '../interfaces/userRegistry.interface';
import { IUserRegistry, UserRegistryPaginatedResponse } from '../interfaces/userRegistry.interface';
import { UserRegistryService } from '../services/userRegistry.service';
@ApiTags('userRegistry')
......@@ -14,8 +14,6 @@ export class UsersRegistryController {
/**
* Find all users in Registry. If search is given as param, filter on it. Otherwise return everything. Results comes paginated (default is 20 per page, defined in service)
* @param query {Query}
* @returns {PaginatedResponse}
*/
@Post()
@UseGuards(JwtAuthGuard)
......@@ -36,7 +34,6 @@ export class UsersRegistryController {
/**
* Return every user in registry
* @returns {Promise<number>}
*/
@Get('/count')
public async findAllCount(): Promise<number> {
......@@ -46,12 +43,11 @@ export class UsersRegistryController {
/**
* Init or reset search index for users
* @returns {IUserRegistry[]}
*/
@Post('searchIndex')
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles('admin')
public async resetES() {
public async resetES(): Promise<IUserRegistry[]> {
this.logger.debug('reset ES UserRegistry');
return await this.userRegistryService.initUserRegistryIndex();
}
......
......@@ -53,7 +53,7 @@ export class UsersController {
@UseGuards(JwtAuthGuard)
@ApiBearerAuth('JWT')
@ApiOperation({ description: 'Get user profile' })
@ApiResponse({ status: HttpStatus.OK, description: 'Return user profil' })
@ApiResponse({ status: HttpStatus.OK, description: 'Return user profile' })
@ApiResponse({ status: HttpStatus.UNAUTHORIZED, description: 'User does not have sufficient rights' })
@Get('profile')
public getProfile(@Request() req) {
......@@ -63,7 +63,8 @@ export class UsersController {
@UseGuards(JwtAuthGuard)
@ApiBearerAuth('JWT')
@ApiOperation({ description: 'Set user profile with employer and job' })
@ApiResponse({ status: HttpStatus.OK, description: 'Return user profil' })
@ApiBody({ type: ProfileDto })
@ApiResponse({ status: HttpStatus.OK, description: 'Return user profile' })
@ApiResponse({ status: HttpStatus.BAD_REQUEST, description: 'Job does not exist' })
@ApiResponse({ status: HttpStatus.BAD_REQUEST, description: 'Employer does not exist' })
@Post('profile')
......@@ -79,17 +80,22 @@ export class UsersController {
this.logger.warn(`Job does not exist: ${profile.jobName}`);
throw new HttpException('Job does not exist', HttpStatus.BAD_REQUEST);
}
await this.usersService.updateUserProfile(req.user._id, employerDocument, jobDocument, profile.withAppointment);
return this.usersService.findOne(req.user.email);
const user = await this.usersService.updateUserProfile(
req.user._id,
employerDocument,
jobDocument,
profile.withAppointment
);
return user;
}
@UseGuards(JwtAuthGuard)
@ApiBearerAuth('JWT')
@ApiOperation({ description: 'Updates name, surname and phone number of a user' })
@ApiBody({ type: UpdateDetailsDto })
@ApiResponse({ status: HttpStatus.CREATED, description: 'Return user profil' })
@ApiResponse({ status: HttpStatus.CREATED, description: 'Return user profile' })
@ApiResponse({ status: HttpStatus.NOT_FOUND, description: 'User not found' })
@ApiResponse({ status: HttpStatus.BAD_REQUEST, description: 'Missing parametter' })
@ApiResponse({ status: HttpStatus.BAD_REQUEST, description: 'Missing parameter' })
@Post('details')
public async updateDetails(@Request() req, @Body() details: UpdateDetailsDto): Promise<User | HttpException> {
this.logger.debug('updateProfile details');
......@@ -239,7 +245,7 @@ export class UsersController {
this.structureService.sendStructureJoinRequest(userFromDb, structure, token[0]);
}
//add token in route + add infos in token
/** add token in route + add infos in token */
@Get('join-validate/:token/:status')
@ApiParam({ name: 'token', type: String, required: true })
@ApiParam({ name: 'status', type: String, required: true })
......@@ -250,7 +256,7 @@ export class UsersController {
id: string;
name: string;
}> {
const decoded: IPendingStructureToken = this.jwtService.decode(token) as IPendingStructureToken;
const decoded = this.jwtService.decode(token) as IPendingStructureToken;
const today = DateTime.local().setZone('utc', { keepLocalTime: true });
if (!token || !status) {
......@@ -272,7 +278,7 @@ export class UsersController {
if (
!userFromDb.pendingStructuresLink
.map((pending) => pending.id)
.filter((id) => id.equals(new Types.ObjectId(decoded.idStructure)))
.some((id) => id.equals(new Types.ObjectId(decoded.idStructure)))
) {
throw new HttpException('User not linked to structure', HttpStatus.NOT_FOUND);
}
......@@ -289,7 +295,7 @@ export class UsersController {
return { id: decoded.idStructure, name: structure.structureName };
}
// Cancel a user's join request
/** Cancel a user's join request */
@Get('join-cancel/:idStructure/:idUser')
@ApiParam({ name: 'idStructure', type: String, required: true })
@ApiParam({ name: 'idUser', type: String, required: true })
......@@ -307,7 +313,7 @@ export class UsersController {
if (
!userFromDb.pendingStructuresLink
.map((pending) => pending.id)
.filter((id) => id.equals(new Types.ObjectId(idStructure)))
.some((id) => id.equals(new Types.ObjectId(idStructure)))
) {
throw new HttpException('This structure is in pending state', HttpStatus.NOT_FOUND);
}
......
import { Reflector } from '@nestjs/core';
import { createMock } from '@golevelup/ts-jest';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { ExecutionContext } from '@nestjs/common';
import { UserRole } from '../enum/user-role.enum';
import { IsPersonalOfferOwnerGuard } from './isPersonalOfferOwner.guard';
......@@ -10,7 +10,7 @@ describe('isPersonalOfferOwner', () => {
let reflector: Reflector;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [],
providers: [
IsPersonalOfferOwnerGuard,
......@@ -63,8 +63,7 @@ describe('isPersonalOfferOwner', () => {
}),
}),
});
const result = await guard.canActivate(context);
const result = guard.canActivate(context);
expect(result).toBeTruthy();
});
......@@ -96,8 +95,7 @@ describe('isPersonalOfferOwner', () => {
}),
}),
});
const result = await guard.canActivate(context);
const result = guard.canActivate(context);
expect(result).toBeFalsy();
expect(reflector.get).toHaveBeenCalled();
});
......
import { Reflector } from '@nestjs/core';
import { createMock } from '@golevelup/ts-jest';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { ExecutionContext } from '@nestjs/common';
import { UserRole } from '../enum/user-role.enum';
import { IsStructureOwnerGuard } from './isStructureOwner.guard';
......@@ -10,7 +10,7 @@ describe('isStrructureOwner', () => {
let reflector: Reflector;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [],
providers: [
IsStructureOwnerGuard,
......@@ -63,8 +63,7 @@ describe('isStrructureOwner', () => {
}),
}),
});
const result = await guard.canActivate(context);
const result = guard.canActivate(context);
expect(result).toBeTruthy();
});
......@@ -96,8 +95,7 @@ describe('isStrructureOwner', () => {
}),
}),
});
const result = await guard.canActivate(context);
const result = guard.canActivate(context);
expect(result).toBeFalsy();
expect(reflector.get).toHaveBeenCalled();
});
......
import { Reflector } from '@nestjs/core';
import { createMock } from '@golevelup/ts-jest';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { RolesGuard } from './roles.guard';
import { ExecutionContext } from '@nestjs/common';
import { UserRole } from '../enum/user-role.enum';
......@@ -10,7 +10,7 @@ describe('RolesGuard', () => {
let reflector: Reflector;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [],
providers: [
RolesGuard,
......@@ -39,7 +39,7 @@ describe('RolesGuard', () => {
it('should skip(return true) if the `HasRoles` decorator is not set', async () => {
jest.spyOn(reflector, 'get').mockImplementation(() => null);
const context = createMock<ExecutionContext>();
const result = await guard.canActivate(context);
const result = guard.canActivate(context);
expect(result).toBeTruthy();
expect(reflector.get).toHaveBeenCalled();
......@@ -56,7 +56,7 @@ describe('RolesGuard', () => {
}),
});
const result = await guard.canActivate(context);
const result = guard.canActivate(context);
expect(result).toBeTruthy();
expect(reflector.get).toHaveBeenCalled();
});
......@@ -72,7 +72,7 @@ describe('RolesGuard', () => {
}),
});
const result = await guard.canActivate(context);
const result = guard.canActivate(context);
expect(result).toBeFalsy();
expect(reflector.get).toHaveBeenCalled();
});
......@@ -88,7 +88,7 @@ describe('RolesGuard', () => {
}),
});
const result = await guard.canActivate(context);
const result = guard.canActivate(context);
expect(result).toBeTruthy();
expect(reflector.get).toHaveBeenCalled();
});
......
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { Types } from 'mongoose';
import { ConfigurationModule } from '../../configuration/configuration.module';
import { SearchModule } from '../../search/search.module';
......@@ -36,7 +36,7 @@ describe('EmployerSearchService Search cases', () => {
let employerSearchService: EmployerSearchService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [SearchModule, ConfigurationModule],
providers: [EmployerSearchService],
}).compile();
......
import { HttpModule } from '@nestjs/axios';
import { HttpStatus } from '@nestjs/common';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { AxiosResponse } from 'axios';
import { Types } from 'mongoose';
import { ConfigurationModule } from '../../configuration/configuration.module';
......@@ -39,7 +39,7 @@ describe('EmployerService', () => {
getAdmins: jest.fn(),
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [ConfigurationModule, HttpModule],
providers: [
EmployerService,
......@@ -303,6 +303,7 @@ describe('EmployerService', () => {
sourceEmployerId: '623aed68c5d45b6fbbaa7e60',
targetEmployerId: '623aed68c5d45b6fbbaa7e61',
});
expect(true).toBe(false);
} catch (e) {
expect(e.message).toBe('Cannot operate on employer.');
expect(e.status).toBe(HttpStatus.NOT_FOUND);
......
import { HttpModule } from '@nestjs/axios';
import { HttpStatus } from '@nestjs/common';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import * as ejs from 'ejs';
import { Types } from 'mongoose';
import { ConfigurationModule } from '../../configuration/configuration.module';
......@@ -72,7 +72,7 @@ describe('JobsService', () => {
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [ConfigurationModule, HttpModule],
providers: [
JobsService,
......@@ -265,15 +265,11 @@ describe('JobsService', () => {
})
.mockResolvedValueOnce(result);
try {
const reply = await jobsService.mergeJob({
sourceJobId: '623aed68c5d45b6fbbaa7e60',
targetJobId: '623aed68c5d45b6fbbaa7e61',
});
expect(reply).toBe(result);
} catch (e) {
expect(e).toBe(null);
}
const reply = await jobsService.mergeJob({
sourceJobId: '623aed68c5d45b6fbbaa7e60',
targetJobId: '623aed68c5d45b6fbbaa7e61',
});
expect(reply).toBe(result);
});
it('should throw error if target job is not validated', async () => {
mockJobModel.exec
......
......@@ -154,7 +154,8 @@ export class JobsService {
}
public getJobsGroupsAttachedJobs(jobsGroupId: string): Promise<JobDocument[]> {
return this.jobModel.find({ jobsGroup: jobsGroupId }).exec();
this.logger.debug(`getJobsGroupsAttachedJobs: ${jobsGroupId}`);
return this.jobModel.find({ jobsGroup: jobsGroupId.toString() }).exec();
}
public isConseillerNumerique(jobId: Types.ObjectId) {
......
import { HttpModule } from '@nestjs/axios';
import { HttpStatus } from '@nestjs/common';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { Types } from 'mongoose';
import { ConfigurationModule } from '../../configuration/configuration.module';
import { MailerService } from '../../mailer/mailer.service';
......@@ -9,6 +9,7 @@ import { CreateJobsGroupsDto } from '../dto/create-jobsGroups.dto';
import { JobsService } from './jobs.service';
import { JobsGroupsService } from './jobsGroups.service';
import { UsersService } from './users.service';
import { JobsGroupsDocument } from '../schemas/jobsGroups.schema';
describe('JobsGroupsService', () => {
let jobsGroupsService: JobsGroupsService;
......@@ -47,7 +48,7 @@ describe('JobsGroupsService', () => {
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [ConfigurationModule, HttpModule],
providers: [
JobsGroupsService,
......@@ -79,7 +80,7 @@ describe('JobsGroupsService', () => {
});
describe('findAll', () => {
it('should findAll all jobs groups', async () => {
it('should findAll', async () => {
const result = [
{
_id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
......@@ -90,6 +91,20 @@ describe('JobsGroupsService', () => {
const reply = await jobsGroupsService.findAll(false);
expect(reply.length).toBe(1);
});
it('should findAll withJobs', async () => {
const populateSpy = jest.spyOn(jobsGroupsService, 'populateJobsGroupsWithJobs');
const result = [
{
_id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
name: 'Technique',
toJSON: jest.fn(),
},
];
mockJobsGroupsModel.exec.mockResolvedValueOnce(result);
const reply = await jobsGroupsService.findAll(true);
expect(reply.length).toBe(1);
expect(populateSpy).toHaveBeenCalled();
});
});
it('findByName', async () => {
......@@ -124,10 +139,16 @@ describe('JobsGroupsService', () => {
});
describe('update', () => {
it('should throw error if not found', async () => {
mockJobsGroupsModel.exec.mockResolvedValueOnce(null);
try {
await jobsGroupsService.update('623aed68c5d45b6fbbaa7e60', { name: 'Technique' });
expect(true).toBe(false);
} catch (e) {
expect(e.status).toBe(HttpStatus.NOT_FOUND);
}
});
it('should update', async () => {
const newJobsGroupsDto = {
name: 'Technique',
};
const newJobsGroups = {
_id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
name: 'Technique',
......@@ -137,21 +158,40 @@ describe('JobsGroupsService', () => {
name: 'Technique old',
save: jest.fn().mockResolvedValueOnce(newJobsGroups),
});
const reply = await jobsGroupsService.update('623aed68c5d45b6fbbaa7e60', newJobsGroupsDto);
const reply = await jobsGroupsService.update('623aed68c5d45b6fbbaa7e60', { name: 'Technique' });
expect(reply.name).toBe('Technique');
});
});
it('should throw error if not found', async () => {
const newJobsGroupsDto = {
name: 'Technique',
};
mockJobsGroupsModel.exec.mockResolvedValueOnce(null);
try {
await jobsGroupsService.update('623aed68c5d45b6fbbaa7e60', newJobsGroupsDto);
expect(true).toBe(false);
} catch (e) {
expect(e.status).toBe(HttpStatus.NOT_FOUND);
}
describe('populateJobsGroupsWithJobs', () => {
it('should populate jobs groups with jobs', async () => {
const populateSpy = jest.spyOn(jobsGroupsService, 'populateJobsGroupsWithJobs');
const result = [
{
_id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
name: 'Technique',
jobs: [
{
_id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
name: 'Technique',
},
],
},
];
mockJobsGroupsModel.exec.mockResolvedValueOnce(result);
const jobsGroups = [
{
_id: new Types.ObjectId('65fd51d64bce0eed5ea1309f'),
name: 'Pilotage de projet',
},
{
_id: new Types.ObjectId('65fd51d64bce0eed5ea130a2'),
name: 'Travail social',
},
] as JobsGroupsDocument[];
populateSpy.mockImplementationOnce(() => jobsGroups as any);
await jobsGroupsService.populateJobsGroupsWithJobs(jobsGroups);
expect(populateSpy).toHaveBeenCalled();
});
});
});
import { ElasticsearchService } from '@nestjs/elasticsearch';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { multipleUsers } from '../../../test/mock/data/users.mock.data';
import { ConfigurationModule } from '../../configuration/configuration.module';
import { SearchModule } from '../../search/search.module';
......@@ -10,7 +10,7 @@ describe('UserRegistrySearchService Search cases', () => {
let userRegistrySearchService: UserRegistrySearchService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [SearchModule, ConfigurationModule],
providers: [UserRegistrySearchService],
}).compile();
......
import { HttpModule } from '@nestjs/axios';
import { getModelToken } from '@nestjs/mongoose';
import { Test, TestingModule } from '@nestjs/testing';
import { Test } from '@nestjs/testing';
import { Types } from 'mongoose';
import { multipleUsers } from '../../../test/mock/data/users.mock.data';
import { ConfigurationModule } from '../../configuration/configuration.module';
......@@ -40,7 +40,7 @@ describe('userRegistryService', () => {
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
const module = await Test.createTestingModule({
imports: [ConfigurationModule, HttpModule],
providers: [
UserRegistryService,
......