import { describe, it, expect } from 'vitest'; import { openInMemoryForTest } from '../../src/lib/server/db'; describe('014_recipe_views migration', () => { it('creates recipe_view table with expected columns', () => { const db = openInMemoryForTest(); const cols = db.prepare("PRAGMA table_info(recipe_view)").all() as Array<{ name: string; type: string; notnull: number; pk: number; }>; const byName = Object.fromEntries(cols.map((c) => [c.name, c])); expect(byName.profile_id?.type).toBe('INTEGER'); expect(byName.profile_id?.notnull).toBe(1); expect(byName.profile_id?.pk).toBe(1); expect(byName.recipe_id?.type).toBe('INTEGER'); expect(byName.recipe_id?.notnull).toBe(1); expect(byName.recipe_id?.pk).toBe(2); expect(byName.last_viewed_at?.type).toBe('TIMESTAMP'); expect(byName.last_viewed_at?.notnull).toBe(1); }); it('has index on (profile_id, last_viewed_at DESC)', () => { const db = openInMemoryForTest(); const idxList = db .prepare("PRAGMA index_list(recipe_view)") .all() as Array<{ name: string }>; expect(idxList.some((i) => i.name === 'idx_recipe_view_recent')).toBe(true); }); });