50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import path from 'node:path';
|
|
import {
|
|
buildMindSpacePageDataPayload,
|
|
injectMindSpacePageDataContext,
|
|
injectPublishedPageDataContext,
|
|
parseMindSpacePublishFilePath,
|
|
} from './mindspace-public-page-context.mjs';
|
|
|
|
test('parseMindSpacePublishFilePath extracts userId and relative path', () => {
|
|
const h5Root = '/srv/memind';
|
|
const filePath = path.join(
|
|
h5Root,
|
|
'MindSpace',
|
|
'1c99b83b-0454-474f-a5d2-129d34506a32',
|
|
'public',
|
|
'survey.html',
|
|
);
|
|
const parsed = parseMindSpacePublishFilePath(filePath, h5Root);
|
|
assert.deepEqual(parsed, {
|
|
userId: '1c99b83b-0454-474f-a5d2-129d34506a32',
|
|
relativePath: 'public/survey.html',
|
|
});
|
|
});
|
|
|
|
test('injectMindSpacePageDataContext adds meta and script before head close', () => {
|
|
const html = '<html><head><title>demo</title></head><body>ok</body></html>';
|
|
const next = injectMindSpacePageDataContext(html, {
|
|
pageId: 'page-123',
|
|
accessMode: 'password',
|
|
});
|
|
assert.match(next, /meta name="mindspace-page-data-page-id" content="page-123"/);
|
|
assert.match(next, /window\.__MINDSPACE_PAGE_DATA__=\{"pageId":"page-123","accessMode":"password"\}/);
|
|
});
|
|
|
|
test('buildMindSpacePageDataPayload returns null without pageId', () => {
|
|
assert.equal(buildMindSpacePageDataPayload({}), null);
|
|
});
|
|
|
|
test('injectPublishedPageDataContext injects pageId from publication resolve result', () => {
|
|
const html = '<html><head></head><body><script src="/assets/page-data-client.js"></script></body></html>';
|
|
const next = injectPublishedPageDataContext(html, {
|
|
pageSource: { pageId: '2b201736-03ca-4172-affd-00f2a0f700b5' },
|
|
publication: { accessMode: 'public' },
|
|
});
|
|
assert.match(next, /meta name="mindspace-page-data-page-id" content="2b201736-03ca-4172-affd-00f2a0f700b5"/);
|
|
assert.match(next, /window\.__MINDSPACE_PAGE_DATA__=\{"pageId":"2b201736-03ca-4172-affd-00f2a0f700b5","accessMode":"public"\}/);
|
|
});
|