Files
memind/mindspace-public-page-context.test.mjs
T

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"\}/);
});