import { api } from '@/utils/apiUtils' import { fetchWebSocketTicket } from '@/websocket/api/fetchWebSocketTicket' jest.mock('@/utils/apiUtils') describe('fetchWebSocketTicket', () => { const mockTicket = { clientAddress: '127.0.0.1', value: 'test-ticket-123', generatedOn: '2025-01-12T10:00:00Z', validUntil: '2025-01-12T11:00:00Z', username: 'testuser' } beforeEach(() => { jest.clearAllMocks() }) it('should fetch ticket successfully', async () => { ;(api.post as jest.Mock).mockResolvedValue({ ok: true, json: async () => mockTicket }) const ticket = await fetchWebSocketTicket() expect(api.post).toHaveBeenCalledWith('ws/ticket') expect(ticket).toEqual(mockTicket) }) it('should throw error when response is not ok', async () => { ;(api.post as jest.Mock).mockResolvedValue({ ok: false }) await expect(fetchWebSocketTicket()).rejects.toThrow( 'Failed to fetch WebSocket ticket' ) }) it('should throw error when network fails', async () => { ;(api.post as jest.Mock).mockRejectedValue(new Error('Network error')) await expect(fetchWebSocketTicket()).rejects.toThrow('Network error') }) })