import { ConfigService } from "@nestjs/config"; import { Test, TestingModule } from "@nestjs/testing"; import { JwtService } from "../crypto/services/jwt.service"; import { UsersService } from "../users/users.service"; import { EventsGateway } from "./events.gateway"; describe("EventsGateway", () => { let gateway: EventsGateway; let _jwtService: JwtService; const mockJwtService = { verifyJwt: jest.fn(), }; const mockConfigService = { get: jest.fn().mockReturnValue("secret-password-32-chars-long-!!!"), }; const mockUsersService = { findOne: jest.fn(), }; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ EventsGateway, { provide: JwtService, useValue: mockJwtService }, { provide: ConfigService, useValue: mockConfigService }, { provide: UsersService, useValue: mockUsersService }, ], }).compile(); gateway = module.get(EventsGateway); _jwtService = module.get(JwtService); gateway.server = { to: jest.fn().mockReturnThis(), emit: jest.fn(), } as any; }); it("should be defined", () => { expect(gateway).toBeDefined(); }); describe("sendToUser", () => { it("should emit event to user room", () => { const userId = "user123"; const event = "test_event"; const data = { foo: "bar" }; gateway.sendToUser(userId, event, data); expect(gateway.server.to).toHaveBeenCalledWith(`user:${userId}`); expect(gateway.server.to(`user:${userId}`).emit).toHaveBeenCalledWith( event, data, ); }); }); });