jest.mock("uuid", () => ({ v4: jest.fn(() => "mocked-uuid"), })); jest.mock("@noble/post-quantum/ml-kem.js", () => ({ ml_kem768: { keygen: jest.fn(), encapsulate: jest.fn(), decapsulate: jest.fn(), }, })); jest.mock("jose", () => ({ SignJWT: jest.fn().mockReturnValue({ setProtectedHeader: jest.fn().mockReturnThis(), setIssuedAt: jest.fn().mockReturnThis(), setExpirationTime: jest.fn().mockReturnThis(), sign: jest.fn().mockResolvedValue("mocked-jwt"), }), jwtVerify: jest.fn(), })); import { Test, TestingModule } from "@nestjs/testing"; import { AuthGuard } from "../auth/guards/auth.guard"; import { RolesGuard } from "../auth/guards/roles.guard"; import { AuthenticatedRequest } from "../common/interfaces/request.interface"; import { ReportsController } from "./reports.controller"; import { ReportsService } from "./reports.service"; describe("ReportsController", () => { let controller: ReportsController; let service: ReportsService; const mockReportsService = { create: jest.fn(), findAll: jest.fn(), updateStatus: jest.fn(), }; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [ReportsController], providers: [{ provide: ReportsService, useValue: mockReportsService }], }) .overrideGuard(AuthGuard) .useValue({ canActivate: () => true }) .overrideGuard(RolesGuard) .useValue({ canActivate: () => true }) .compile(); controller = module.get(ReportsController); service = module.get(ReportsService); }); it("should be defined", () => { expect(controller).toBeDefined(); }); describe("create", () => { it("should call service.create", async () => { const req = { user: { sub: "user-uuid" } } as AuthenticatedRequest; const dto = { contentId: "1", reason: "spam" }; await controller.create(req, dto as any); expect(service.create).toHaveBeenCalledWith("user-uuid", dto); }); }); describe("findAll", () => { it("should call service.findAll", async () => { await controller.findAll(10, 0); expect(service.findAll).toHaveBeenCalledWith(10, 0); }); }); describe("updateStatus", () => { it("should call service.updateStatus", async () => { const dto = { status: "resolved" as any }; await controller.updateStatus("1", dto); expect(service.updateStatus).toHaveBeenCalledWith("1", "resolved"); }); }); });