feat: 作业纸
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
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,
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user