App source (main/preload/worker/renderer) -> ESM; app is now type: module; __dirname via import.meta.url; worker spawned with type module. Preload is built as CJS (electron-vite output format) because the sandboxed renderer does not support ESM preload; main loads ../preload/index.js. Removed dead imports (nativeImage, readline) and the obsolete scripts/dev.js. Tests: 4 app tests require->import; app-main-settings rewritten with node:test mock.module + dynamic import (replacing CJS Module._load mocking); test script adds --experimental-test-module-mocks. electron-vite build clean, 119/119, and npm run dev verified: app launches, preload bridges IPC, data loads.
29 lines
943 B
JavaScript
29 lines
943 B
JavaScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { createRequire } from 'node:module';
|
|
|
|
const require = createRequire(import.meta.url);
|
|
import { buildRecapExportQuery, cleanRecapFilename } from '../app/src/main/recap-capture-query.js';
|
|
|
|
test('recap export query includes the selected recap filename', () => {
|
|
const query = buildRecapExportQuery({
|
|
cardIdx: 3,
|
|
archetype: 'shipper',
|
|
filename: 'recap-2026-06.json',
|
|
});
|
|
|
|
assert.equal(query, 'card=3&arch=shipper&file=recap-2026-06.json');
|
|
});
|
|
|
|
test('recap export query strips paths before passing filename to renderer', () => {
|
|
assert.equal(cleanRecapFilename('/tmp/recap-2026-W24.json'), 'recap-2026-W24.json');
|
|
assert.equal(
|
|
buildRecapExportQuery({
|
|
cardIdx: '2',
|
|
archetype: 'architect',
|
|
filename: '/Users/dev/.obelisk/recap/recap-2026-W24.json',
|
|
}),
|
|
'card=2&arch=architect&file=recap-2026-W24.json',
|
|
);
|
|
});
|