import { describe, it, expect, beforeEach } from 'vitest'; import { groceries, categories } from '$lib/server/db/schema'; import { eq } from 'drizzle-orm'; import { createTestDb, type TestDb } from '$lib/server/db/test-helper'; import { isUniqueViolation } from './errors'; describe('isUniqueViolation', () => { let db: TestDb['db']; beforeEach(async () => { db = (await createTestDb()).db; await db.insert(categories).values({ name: 'Épices' }); await db .insert(groceries) .values({ name: 'olives', createdAt: '2026-01-01T00:00:00.000Z' }); }); it('detects a duplicate insert on a unique column', async () => { const error = await db .insert(categories) .values({ name: 'Épices' }) .catch((e: unknown) => e); expect(isUniqueViolation(error)).toBe(true); }); it('detects a duplicate name on update', async () => { await db .insert(groceries) .values({ name: 'pain', createdAt: '2026-01-02T00:00:00.000Z' }); const error = await db .update(groceries) .set({ name: 'olives' }) .where(eq(groceries.name, 'pain')) .catch((e: unknown) => e); expect(isUniqueViolation(error)).toBe(true); }); it('leaves other failures alone', () => { expect(isUniqueViolation(new Error('network is unreachable'))).toBe(false); expect(isUniqueViolation(undefined)).toBe(false); }); });