test: usar imports dinámicos y afterEach asíncrono en pruebas

Co-authored-by: aider (openrouter/openai/gpt-5) <aider@aider.chat>
main
brobert 1 week ago
parent 01c274a8ca
commit d7bf328db5

@ -1,7 +1,6 @@
import { beforeEach, afterEach, describe, expect, it } from 'bun:test'; import { beforeEach, afterEach, describe, expect, it } from 'bun:test';
import { createTempDb } from './helpers/db'; import { createTempDb } from './helpers/db';
import { closeDb } from '../../apps/web/src/lib/server/db.ts'; // Los imports del handler y closeDb se hacen dinámicos dentro de cada test/teardown
import { POST as completeHandler } from '../../apps/web/src/routes/api/tasks/[id]/complete/+server.ts';
function toIsoSql(d: Date): string { function toIsoSql(d: Date): string {
return d.toISOString().replace('T', ' ').replace('Z', ''); return d.toISOString().replace('T', ' ').replace('Z', '');
@ -35,9 +34,12 @@ describe('Web API - completar tarea encola reacción ✅', () => {
db.prepare(`INSERT OR REPLACE INTO group_members (group_id, user_id, is_admin, is_active) VALUES (?, ?, 0, 1)`).run(GROUP_ID, USER); db.prepare(`INSERT OR REPLACE INTO group_members (group_id, user_id, is_admin, is_active) VALUES (?, ?, 0, 1)`).run(GROUP_ID, USER);
}); });
afterEach(() => { afterEach(async () => {
// Cerrar la conexión singleton de la web antes de borrar el archivo // Cerrar la conexión singleton de la web antes de borrar el archivo
try { closeDb(); } catch {} try {
const { closeDb } = await import('../../apps/web/src/lib/server/db.ts');
closeDb();
} catch {}
if (cleanup) cleanup(); if (cleanup) cleanup();
// Limpiar env relevantes // Limpiar env relevantes
delete process.env.DB_PATH; delete process.env.DB_PATH;
@ -68,6 +70,10 @@ describe('Web API - completar tarea encola reacción ✅', () => {
params: { id: String(taskId) }, params: { id: String(taskId) },
request: new Request('http://localhost', { method: 'POST' }) request: new Request('http://localhost', { method: 'POST' })
}; };
const { POST: completeHandler } = await import('../../apps/web/src/routes/api/tasks/[id]/complete/+server.ts');
const { POST: completeHandler } = await import('../../apps/web/src/routes/api/tasks/[id]/complete/+server.ts');
const { POST: completeHandler } = await import('../../apps/web/src/routes/api/tasks/[id]/complete/+server.ts');
const { POST: completeHandler } = await import('../../apps/web/src/routes/api/tasks/[id]/complete/+server.ts');
const res = await completeHandler(event); const res = await completeHandler(event);
expect(res.status).toBe(200); expect(res.status).toBe(200);
const payload = await res.json(); const payload = await res.json();

Loading…
Cancel
Save