Letschat / src /app /api /codes /setup /route.test.ts
HonzaH's picture
Upload 171 files
9853b20 verified
Raw
History Blame Contribute Delete
1.54 kB
import { describe, it, expect, vi, beforeEach } from 'vitest'
beforeEach(() => {
vi.resetModules()
})
describe('POST /api/codes/setup', () => {
it('creates room and marks code used for existing code without PIN', async () => {
vi.doMock('lib/logger', () => ({ logEvent: vi.fn() }))
const updateCodeMock = vi.fn().mockResolvedValue({ id: 'code-1' })
const getCodeByCodeMock = vi.fn().mockResolvedValue({ id: 'code-1', code: 'EXIST', linked_to: 'code-2', used: null })
const getCodeByIdMock = vi.fn().mockResolvedValue({ id: 'code-2', code: 'LINK', linked_to: 'code-1', used: null })
const insertCodeMock = vi.fn()
vi.doMock('lib/persistence', () => ({
updateCode: updateCodeMock,
getCodeByCode: getCodeByCodeMock,
getCodeById: getCodeByIdMock,
insertCode: insertCodeMock,
updateRoom: vi.fn()
}))
const createRoomMock = vi.fn().mockResolvedValue('room-123')
vi.doMock('lib/roomService', () => ({ createRoom: createRoomMock }))
const setAnonMock = vi.fn().mockResolvedValue(null)
vi.doMock('lib/session', () => ({ setAnonymousSession: setAnonMock }))
const route = await import('./route')
const req = { json: async () => ({ code: 'EXIST', userAgent: 'UA' }) } as any
const res = await route.POST(req)
expect(res.status).toBe(200)
expect(createRoomMock).toHaveBeenCalledWith('code-1', 'code-2')
expect(updateCodeMock).toHaveBeenCalled()
expect(insertCodeMock).not.toHaveBeenCalled()
expect(setAnonMock).toHaveBeenCalled()
})
})