Letschat / src /app /api /users /transfer-code /route.test.ts
HonzaH's picture
Upload 182 files
b00f0f1 verified
Raw
History Blame Contribute Delete
1.36 kB
import { describe, it, expect, vi, beforeEach } from 'vitest'
beforeEach(() => {
vi.resetModules()
})
describe('POST /api/users/transfer-code', () => {
it('transfers code to authenticated user when PIN valid or not required', async () => {
vi.doMock('lib/logger', () => ({ logEvent: vi.fn() }))
vi.doMock('lib/appSession', () => ({ getAppSession: async () => ({ userId: 'user-1' }) }))
vi.doMock('lib/supabase/server', () => ({ isSupabaseConfigured: () => true }))
// Mock persistence
const codeRow = { id: 'code-1', code: 'ABCDE', used: 1, user_id: null, pin_hash: null, room_id: 'room-1' }
const getCodeByCodeMock = vi.fn().mockResolvedValue(codeRow)
const getCodeForUserInRoomMock = vi.fn().mockResolvedValue(null)
const updateCodeMock = vi.fn().mockResolvedValue({ ...codeRow, user_id: 'user-1' })
vi.doMock('lib/persistence', () => ({
getCodeByCode: getCodeByCodeMock,
getCodeForUserInRoom: getCodeForUserInRoomMock,
updateCode: updateCodeMock
}))
const route = await import('./route')
const req = { json: async () => ({ code: 'ABCDE' }) } as any
const res: any = await route.POST(req)
expect(res.status).toBe(200)
expect(getCodeByCodeMock).toHaveBeenCalled()
expect(updateCodeMock).toHaveBeenCalledWith('code-1', { user_id: 'user-1', session_hash: null })
})
})