68 lines
2.2 KiB
TypeScript
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,
|
|
);
|
|
});
|