import { Test, TestingModule } from '@nestjs/testing'; import { AbsencesGardeController } from './absences-garde.controller'; import { AbsencesGardeService } from './absences-garde.service'; import { AuthGuard } from 'src/common/guards/auth.guard'; import { RolesGuard } from 'src/common/guards/roles.guard'; import { RoleType } from 'src/entities/users.entity'; import { TypeAbsenceGardeType } from 'src/entities/absences_garde.entity'; describe('AbsencesGardeController (#172)', () => { let controller: AbsencesGardeController; const serviceMock = { lister: jest.fn(), creer: jest.fn(), maj: jest.fn(), supprimer: jest.fn(), }; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [AbsencesGardeController], providers: [{ provide: AbsencesGardeService, useValue: serviceMock }], }) .overrideGuard(AuthGuard) .useValue({ canActivate: () => true }) .overrideGuard(RolesGuard) .useValue({ canActivate: () => true }) .compile(); controller = module.get(AbsencesGardeController); jest.clearAllMocks(); }); it('should be defined', () => { expect(controller).toBeDefined(); }); it('lister délègue au service', async () => { serviceMock.lister.mockResolvedValue({ items: [] }); const res = await controller.lister( 'u1', RoleType.PARENT, 'pl-1', undefined, undefined, '2026-01-01', '2026-12-31', ); expect(serviceMock.lister).toHaveBeenCalledWith('u1', RoleType.PARENT, { placementId: 'pl-1', type: undefined, statut: undefined, from: '2026-01-01', to: '2026-12-31', }); expect(res.items).toEqual([]); }); it('creer délègue au service', async () => { serviceMock.creer.mockResolvedValue({ id: 'a1' }); const dto = { id_placement: 'pl-1', type: TypeAbsenceGardeType.ABSENCE_ENFANT, date_debut: '2026-10-01', date_fin: '2026-10-02', }; await controller.creer('u1', RoleType.PARENT, dto); expect(serviceMock.creer).toHaveBeenCalledWith( 'u1', RoleType.PARENT, dto, ); }); });