import { Test, TestingModule } from '@nestjs/testing'; import { DossiersController } from './dossiers.controller'; import { DossiersService } from './dossiers.service'; import { SuppressionService } from '../suppressions/suppression.service'; import { AuthGuard } from 'src/common/guards/auth.guard'; import { RolesGuard } from 'src/common/guards/roles.guard'; import { StatutUtilisateurType } from 'src/entities/users.entity'; describe('DossiersController', () => { let controller: DossiersController; const dossiersServiceMock = { listDossiers: jest.fn(), getDossierByNumero: jest.fn(), }; const suppressionServiceMock = { deleteDossier: jest.fn(), }; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [DossiersController], providers: [ { provide: DossiersService, useValue: dossiersServiceMock }, { provide: SuppressionService, useValue: suppressionServiceMock }, ], }) .overrideGuard(AuthGuard) .useValue({ canActivate: () => true }) .overrideGuard(RolesGuard) .useValue({ canActivate: () => true }) .compile(); controller = module.get(DossiersController); jest.clearAllMocks(); }); it('should be defined', () => { expect(controller).toBeDefined(); }); it('list delegates to dossiersService.listDossiers with q', async () => { dossiersServiceMock.listDossiers.mockResolvedValue([ { type: 'famille', numero_dossier: '2026-000043', libelle: 'Claire MARTIN', emails: ['claire@test.fr'], user_ids: ['u1'], statut: StatutUtilisateurType.ACTIF, a_valider: false, date_reference: null, }, ]); const res = await controller.list('martin'); expect(dossiersServiceMock.listDossiers).toHaveBeenCalledWith('martin'); expect(res).toHaveLength(1); expect(res[0].numero_dossier).toBe('2026-000043'); }); it('getDossier delegates to getDossierByNumero', async () => { dossiersServiceMock.getDossierByNumero.mockResolvedValue({ type: 'family', dossier: { numero_dossier: '2026-000001' }, }); const res = await controller.getDossier('2026-000001'); expect(dossiersServiceMock.getDossierByNumero).toHaveBeenCalledWith('2026-000001'); expect(res.type).toBe('family'); }); it('remove delegates to suppressionService.deleteDossier', async () => { const user = { id: 'u1', role: 'gestionnaire' } as never; suppressionServiceMock.deleteDossier.mockResolvedValue({ type: 'famille', deleted_user_ids: [], deleted_enfant_ids: [], message: 'ok', }); await controller.remove('2026-000001', user); expect(suppressionServiceMock.deleteDossier).toHaveBeenCalledWith( '2026-000001', user, ); }); });