import { describe, it, expect, vi } from 'vitest' const mockIncident = { id: 'inc-1', incident_type: 'injury', description: 'Worker slipped on wet floor in cold store, fractured wrist.', injury_involved: true, asset_involved: false, medical_status: 'medical_treatment', } vi.mock('@/lib/supabase/server', () => ({ createClient: vi.fn().mockResolvedValue({ auth: { getUser: vi.fn().mockResolvedValue({ data: { user: { id: 'user-1' } }, error: null }), }, from: vi.fn().mockReturnValue({ select: vi.fn().mockReturnThis(), eq: vi.fn().mockReturnThis(), single: vi.fn() .mockResolvedValueOnce({ data: { role: 'hse' } }) // profile .mockResolvedValueOnce({ data: mockIncident }), // incident }), rpc: vi.fn().mockResolvedValue({ error: null }), }), })) vi.mock('@/lib/claude/client', () => ({ anthropic: { messages: { create: vi.fn().mockResolvedValue({ content: [{ type: 'tool_use', name: 'suggest_triage', input: { severity: 3, is_fatality: false, is_serious_bodily_injury: true, is_dangerous_occurrence: false, is_occupational_disease: false, rationale: 'Fracture constitutes serious bodily injury under NADOPOD 2004.', }, }], }), }, }, })) describe('POST /api/incidents/[id]/ai/triage-suggest', () => { it('returns triage suggestion with severity and DOSH flags', async () => { const { POST } = await import('@/app/api/incidents/[id]/ai/triage-suggest/route') const req = new Request('http://localhost/api/incidents/inc-1/ai/triage-suggest', { method: 'POST' }) const res = await POST(req as never, { params: Promise.resolve({ id: 'inc-1' }) }) expect(res.status).toBe(200) const body = await res.json() expect(body.severity).toBe(3) expect(body.is_serious_bodily_injury).toBe(true) expect(body.rationale).toBeTruthy() }) })