From c2a6783f2676080b9294e98bc6edab93e6d0b7ea Mon Sep 17 00:00:00 2001 From: Wind-Explorer Date: Sun, 29 Mar 2026 19:32:01 +0800 Subject: [PATCH] test: update tests for WS perf and auth changes --- src/users/users.controller.spec.ts | 1 + src/ws/state/state.gateway.spec.ts | 39 ++++++++++++++---------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/users/users.controller.spec.ts b/src/users/users.controller.spec.ts index 53280d6..35fbe62 100644 --- a/src/users/users.controller.spec.ts +++ b/src/users/users.controller.spec.ts @@ -22,6 +22,7 @@ describe('UsersController', () => { const mockAuthUser: AuthenticatedUser = { userId: 'uuid-123', email: 'test@example.com', + tokenType: 'access', roles: ['user'], }; diff --git a/src/ws/state/state.gateway.spec.ts b/src/ws/state/state.gateway.spec.ts index daf0735..4f74dad 100644 --- a/src/ws/state/state.gateway.spec.ts +++ b/src/ws/state/state.gateway.spec.ts @@ -3,7 +3,6 @@ import { Test, TestingModule } from '@nestjs/testing'; import { StateGateway } from './state.gateway'; import { AuthenticatedSocket } from '../../types/socket'; import { JwtVerificationService } from '../../auth/services/jwt-verification.service'; -import { UsersService } from '../../users/users.service'; import { PrismaService } from '../../database/prisma.service'; import { UserSocketService } from './user-socket.service'; import { WsNotificationService } from './ws-notification.service'; @@ -23,6 +22,8 @@ type MockSocket = { userId?: string; activeDollId?: string | null; friends?: Set; + senderName?: string; + senderNameCachedAt?: number; }; handshake?: any; disconnect?: jest.Mock; @@ -39,7 +40,6 @@ describe('StateGateway', () => { sockets: { sockets: { size: number; get: jest.Mock } }; to: jest.Mock; }; - let mockUsersService: Partial; let mockJwtVerificationService: Partial; let mockPrismaService: Partial; let mockUserSocketService: Partial; @@ -67,12 +67,6 @@ describe('StateGateway', () => { }), }; - mockUsersService = { - findOne: jest.fn().mockResolvedValue({ - id: 'user-id', - }), - }; - mockJwtVerificationService = { extractToken: jest.fn((handshake) => handshake.auth?.token), verifyToken: jest.fn().mockReturnValue({ @@ -83,7 +77,12 @@ describe('StateGateway', () => { mockPrismaService = { user: { - findUnique: jest.fn().mockResolvedValue({ activeDollId: 'doll-123' }), + findUnique: jest.fn().mockResolvedValue({ + id: 'user-id', + name: 'Test User', + username: 'test-user', + activeDollId: 'doll-123', + }), } as any, friendship: { findMany: jest.fn().mockResolvedValue([]), @@ -119,7 +118,6 @@ describe('StateGateway', () => { const module: TestingModule = await Test.createTestingModule({ providers: [ StateGateway, - { provide: UsersService, useValue: mockUsersService }, { provide: JwtVerificationService, useValue: mockJwtVerificationService, @@ -190,7 +188,6 @@ describe('StateGateway', () => { ); // Should NOT call these anymore in handleConnection - expect(mockUsersService.findOne).not.toHaveBeenCalled(); expect(mockUserSocketService.setSocket).not.toHaveBeenCalled(); // Should set data on client @@ -244,6 +241,9 @@ describe('StateGateway', () => { // Mock Prisma responses (mockPrismaService.user!.findUnique as jest.Mock).mockResolvedValue({ + id: 'user-id', + name: 'Test User', + username: 'test-user', activeDollId: 'doll-123', }); (mockPrismaService.friendship!.findMany as jest.Mock).mockResolvedValue([ @@ -255,32 +255,29 @@ describe('StateGateway', () => { mockClient as unknown as AuthenticatedSocket, ); - // 1. Load User - expect(mockUsersService.findOne).toHaveBeenCalledWith('test-sub'); - - // 2. Set Socket + // 1. Set Socket expect(mockUserSocketService.setSocket).toHaveBeenCalledWith( 'user-id', 'client1', ); - // 3. Fetch State (DB) + // 2. Fetch State (DB) expect(mockPrismaService.user!.findUnique).toHaveBeenCalledWith({ - where: { id: 'user-id' }, - select: { activeDollId: true }, + where: { id: 'test-sub' }, + select: { id: true, name: true, username: true, activeDollId: true }, }); expect(mockPrismaService.friendship!.findMany).toHaveBeenCalledWith({ - where: { userId: 'user-id' }, + where: { userId: 'test-sub' }, select: { friendId: true }, }); - // 4. Update Client Data + // 3. Update Client Data expect(mockClient.data.userId).toBe('user-id'); expect(mockClient.data.activeDollId).toBe('doll-123'); expect(mockClient.data.friends).toContain('friend-1'); expect(mockClient.data.friends).toContain('friend-2'); - // 5. Emit Initialized + // 4. Emit Initialized expect(mockClient.emit).toHaveBeenCalledWith('initialized', { userId: 'user-id', activeDollId: 'doll-123',