Files
doodle-store/apps/server/test/paper-sheet.test.ts
T
2026-10-23 16:52:47 +08:00

68 lines
2.2 KiB
TypeScript

import assert from 'node:assert/strict';
import { test } from 'node:test';
import {
PAPER_SHEET_PATH,
PAPER_SHEET_PRESETS,
paperSheetPreset,
publicPaperSheetRendering,
} from '../src/worksheets/paper-sheet-presets';
import { parseWorksheetExport } from '../src/imports/worksheet-import';
import { worksheetFixture } from './worksheet-import.fixture';
test('独立纸张:固定注册、路由归属、导入配置和公开参数一致', () => {
assert.equal(
new Set(PAPER_SHEET_PRESETS.map((entry) => entry.id)).size,
10,
);
for (const entry of PAPER_SHEET_PRESETS) {
const path = `${PAPER_SHEET_PATH}?id=${entry.id}`;
const config = paperSheetPreset(entry.id, path)!;
const row = parseWorksheetExport(
JSON.stringify([{ ...worksheetFixture, _id: entry.id, path }]),
).rows[0]!.data;
assert.equal(row.rendererKey, 'paper-sheet');
assert.deepEqual(row.renderConfig, { paperType: entry.paperType });
assert.deepEqual(
publicPaperSheetRendering({
id: entry.id,
path,
...config,
renderConfig: {
...config.renderConfig,
privateKey: 'must-not-leak',
},
}),
{ rendererKey: 'paper-sheet', paperType: entry.paperType },
);
assert.throws(() =>
paperSheetPreset(entry.id, `${PAPER_SHEET_PATH}?id=paper-sheet`),
);
assert.equal(
publicPaperSheetRendering({
id: entry.id,
path,
...config,
renderConfig: { paperType: 'unknown' },
}),
undefined,
);
assert.equal(
publicPaperSheetRendering({
id: entry.id,
path,
...config,
rendererKey: 'unknown',
}),
undefined,
);
}
assert.equal(
paperSheetPreset('paper-sheet', `${PAPER_SHEET_PATH}?id=paper-sheet`),
undefined,
);
assert.equal(
paperSheetPreset('paper-unregistered', '/arbitrary'),
undefined,
);
});