import { describe, expect, it } from 'vitest' import { accessRequestFromRow, ACCESS_REQUEST_STATUSES } from '../src/access-requests.js' const base = { id: 'ar_1', user_id: 'u_1', email: 'a@example.com', note: null, created_at: new Date('2026-10-10T00:00:00Z'), claimed_agent_count: 0, } describe('accessRequestFromRow 覆盖全部状态', () => { it('pending 不能带审核字段', () => { expect(accessRequestFromRow({ ...base, status: 'pending', reviewed_at: null, reviewed_by_user_id: null }).status).toBe('pending') expect(() => accessRequestFromRow({ ...base, status: 'pending', reviewed_at: new Date(), reviewed_by_user_id: 'u_admin' })).toThrow(/ar_1/) }) it.each(['approved', 'rejected'])('%s 必须有审核人和审核时间', (status) => { expect(accessRequestFromRow({ ...base, status, reviewed_at: new Date(), reviewed_by_user_id: 'u_admin' }).status).toBe(status) expect(() => accessRequestFromRow({ ...base, status, reviewed_at: null, reviewed_by_user_id: 'u_admin' })).toThrow(/reviewed_at/) }) it('未知状态直接 throw', () => { expect(() => accessRequestFromRow({ ...base, status: 'archived', reviewed_at: null, reviewed_by_user_id: null })).toThrow(/Unhandled status: archived/) }) it('状态全集与 DB CHECK 一致', () => { expect(ACCESS_REQUEST_STATUSES).toEqual(['pending', 'approved', 'rejected']) }) })