netajam_obsidian_note_uid_g.../vitest.config.ts
Netajam 3fd4a2ff97 Introduce Vitest test suite for UID generation and command behavior
Sets up Vitest with an aliased obsidian stub so tests can load production
modules without the real Electron-bound API, and a fake-app builder
(in-memory vault, frontmatter, processFrontMatter) for testing commands
that touch the Obsidian app object.

Coverage:
- uidUtils: generator selection (UUID/NanoID/ULID), NanoID separator
  injection, collision retry, getUIDFromFile/setUID/removeUID across
  edge cases (custom uidKey, legacy key cleanup, error paths).
- commands: settings-driven decisions (autoGenerateUid toggle, scope=vault
  vs folder, exclusions including multi-entry / whitespace / blank /
  trailing-slash variants), bulk vs per-file parity, copy/clear flows,
  and degenerate "everything excluded" combinations.

Includes one intentionally failing it() at commands.test.ts:225 that
documents the inconsistency between handleClearUIDsInFolder (treats "/"
as the whole vault) and the exclusion matcher (treats "/" as inert).

The build's tsc step now excludes tests/ and *.test.ts; Vitest type-checks
test code via esbuild at run time. Run with: npm test (or npm run test:watch).
2026-04-27 20:53:21 +02:00

14 lines
276 B
TypeScript

import { defineConfig } from 'vitest/config';
import * as path from 'path';
export default defineConfig({
resolve: {
alias: {
obsidian: path.resolve(__dirname, 'tests/obsidian-stub.ts'),
},
},
test: {
include: ['src/**/*.test.ts'],
environment: 'node',
},
});