Mechanical reformat — no logic changes. 398 files changed, 19125 insertions(+), 16457 deletions(-). Prettier 3.8.4 with .prettierrc (singleQuote:true, semi:true, tabWidth:2, trailingComma:all, printWidth:100). Isolated per D-13-08 for reviewability.
40 lines
1.5 KiB
TypeScript
40 lines
1.5 KiB
TypeScript
/**
|
|
* Vitest global test setup for apps/api.
|
|
*
|
|
* Establishes shared test infrastructure for API tests:
|
|
* - DB pool access via the existing client.ts (DB_HOST/DB_NAME from env)
|
|
* - Per-test cleanup for list tables (truncate between tests so state is isolated)
|
|
*
|
|
* Usage:
|
|
* This file is referenced in vitest.config.ts via test.setupFiles.
|
|
* Pure-logic tests (listEmitter, fractional rank) do NOT require DB — the
|
|
* cleanup function is a no-op when the tables are empty.
|
|
*
|
|
* Environment:
|
|
* Set DB_HOST, DB_USER, DB_PASSWORD, DB_NAME in the test environment.
|
|
* Tests run against a local MariaDB dev database; production data is never touched.
|
|
*/
|
|
|
|
import { afterEach } from 'vitest';
|
|
import { db } from '../src/db/client.js';
|
|
import { lists, listItems, listShares, pushSubscriptions } from '../src/db/schema.js';
|
|
|
|
/**
|
|
* Truncate list and push tables in FK-safe order after each test.
|
|
* list_items and list_shares have FK to lists; delete children first.
|
|
* pushSubscriptions has FK to users via user_id; deleted before lists (no FK to lists).
|
|
* Called automatically via afterEach — no per-test setup needed.
|
|
*/
|
|
afterEach(async () => {
|
|
try {
|
|
// Delete child rows first to avoid FK constraint violations
|
|
await db.delete(listItems);
|
|
await db.delete(listShares);
|
|
await db.delete(pushSubscriptions);
|
|
await db.delete(lists);
|
|
} catch {
|
|
// DB may not be available in pure-unit test runs (no DB_HOST configured).
|
|
// Swallow the error — pure-logic tests do not need cleanup.
|
|
}
|
|
});
|