diff --git a/src/temp-user/temp-user.controller.spec.ts b/src/temp-user/temp-user.controller.spec.ts index 82aa0e68dd75e964de49859d6bf864c56ab41340..d4a69b9d796842066fd34faba55ba8e7bac7678e 100644 --- a/src/temp-user/temp-user.controller.spec.ts +++ b/src/temp-user/temp-user.controller.spec.ts @@ -4,6 +4,7 @@ import { Test } from '@nestjs/testing'; import { MailerModule } from '../mailer/mailer.module'; import { TempUserController } from './temp-user.controller'; import { TempUserService } from './temp-user.service'; +import { StructuresService } from '../structures/services/structures.service'; describe('TempUserService', () => { let tempUserController: TempUserController; @@ -13,10 +14,15 @@ describe('TempUserService', () => { findAll: jest.fn(), }; + const structureServiceMock = {}; + beforeEach(async () => { const module = await Test.createTestingModule({ imports: [HttpModule, MailerModule], - providers: [{ provide: TempUserService, useValue: mockTempUserService }], + providers: [ + { provide: TempUserService, useValue: mockTempUserService }, + { provide: StructuresService, useValue: structureServiceMock }, + ], controllers: [TempUserController], }).compile(); @@ -29,6 +35,7 @@ describe('TempUserService', () => { describe('findAll', () => { it('should get all temporary users', async () => { + mockTempUserService.findAll.mockResolvedValue([]); await tempUserController.findAll(); expect(mockTempUserService.findAll).toHaveBeenCalled(); }); diff --git a/src/temp-user/temp-user.controller.ts b/src/temp-user/temp-user.controller.ts index 166a6777acdbe036c36adb09b88046767a4b0c0c..e2bff65259344aea151b80ccf6b854e9ab00de27 100644 --- a/src/temp-user/temp-user.controller.ts +++ b/src/temp-user/temp-user.controller.ts @@ -2,15 +2,34 @@ import { Controller, Get, HttpException, HttpStatus, Param } from '@nestjs/commo import { ApiParam, ApiTags } from '@nestjs/swagger'; import { TempUser } from './temp-user.schema'; import { TempUserService } from './temp-user.service'; +import { StructuresService } from '../structures/services/structures.service'; +import { ITempUser, TempUserWithStructures } from './temp-user.interface'; @ApiTags('temp-user') @Controller('temp-user') export class TempUserController { - constructor(private readonly tempUserService: TempUserService) {} + constructor( + private readonly tempUserService: TempUserService, + private readonly structuresService: StructuresService + ) {} @Get() - public async findAll(): Promise<TempUser[]> { - return await this.tempUserService.findAll(); + public async findAll(): Promise<TempUserWithStructures[]> { + return await this.tempUserService.findAll().then(async (users: ITempUser[]) => { + return Promise.all( + users.map(async (user) => { + return { + email: user.email, + structures: await Promise.all( + user.structuresLink.map(async (id) => { + return this.structuresService.findOne(id.toHexString()); + }) + ), + updatedAt: user.updatedAt ? user.updatedAt.toLocaleDateString('fr-FR') : '', + }; + }) + ); + }); } @Get(':id') diff --git a/src/temp-user/temp-user.interface.ts b/src/temp-user/temp-user.interface.ts index 67eb0e73400c84e3899ab8ab73fe571f91f68672..51c298f321d194f2409c5ee492522efc14903921 100644 --- a/src/temp-user/temp-user.interface.ts +++ b/src/temp-user/temp-user.interface.ts @@ -1,6 +1,14 @@ import { Document, Types } from 'mongoose'; +import { Structure } from '../structures/schemas/structure.schema'; export interface ITempUser extends Document { email: string; structuresLink?: Types.ObjectId[]; + updatedAt: Date; +} + +export interface TempUserWithStructures { + email: string; + structures: Structure[]; + updatedAt: string; } diff --git a/src/temp-user/temp-user.module.ts b/src/temp-user/temp-user.module.ts index f5a171a925fc75fb30210abc14fad2ed18f57b32..ef3a806f91dadd6f6a3ec2e757613f14c9d343a4 100644 --- a/src/temp-user/temp-user.module.ts +++ b/src/temp-user/temp-user.module.ts @@ -1,13 +1,19 @@ import { HttpModule } from '@nestjs/axios'; -import { Module } from '@nestjs/common'; +import { forwardRef, Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; import { TempUser, TempUserSchema } from './temp-user.schema'; import { TempUserService } from './temp-user.service'; import { TempUserController } from './temp-user.controller'; import { MailerModule } from '../mailer/mailer.module'; +import { StructuresModule } from '../structures/structures.module'; @Module({ - imports: [MongooseModule.forFeature([{ name: TempUser.name, schema: TempUserSchema }]), HttpModule, MailerModule], + imports: [ + MongooseModule.forFeature([{ name: TempUser.name, schema: TempUserSchema }]), + HttpModule, + MailerModule, + forwardRef(() => StructuresModule), + ], providers: [TempUserService], exports: [TempUserService], controllers: [TempUserController], diff --git a/src/temp-user/temp-user.schema.ts b/src/temp-user/temp-user.schema.ts index a58db8d0b9f9444f56e68cc12d5bf996b67022e2..c246eb6b94c330b1cf447f88df11d5a44a4f9bf5 100644 --- a/src/temp-user/temp-user.schema.ts +++ b/src/temp-user/temp-user.schema.ts @@ -1,7 +1,5 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; -import { Document, Types } from 'mongoose'; - -export type TempUserDocument = TempUser & Document; +import { Types } from 'mongoose'; @Schema({ timestamps: true }) export class TempUser { diff --git a/src/temp-user/temp-user.service.ts b/src/temp-user/temp-user.service.ts index 6dd2fb91d049d0cae86233c1c810e5ea5844d9b0..5702b0c89b72cb4cac89aefaae3687f9641d8614 100644 --- a/src/temp-user/temp-user.service.ts +++ b/src/temp-user/temp-user.service.ts @@ -31,15 +31,7 @@ export class TempUserService { public async findAll(): Promise<ITempUser[]> { this.logger.debug('findAll'); try { - const tempUsers = await this.tempUserModel - .find() - .populate({ - path: 'structuresLink', - select: 'structureName', - }) - .exec(); - - return tempUsers; + return await this.tempUserModel.find().exec(); } catch (error) { throw new HttpException('An error occurred while fetching temp users.', HttpStatus.INTERNAL_SERVER_ERROR); }