Files
memind/mindspace-page-achievement-stats.test.mjs
T
john 421e204711
Memind CI / Test, build, and release guards (push) Successful in 3m28s
feat(mindspace): add achievements showcase with paginated management
Ship the M成果 page with list/delete UX, fix deletePage for incomplete page records, route /space/achievements, and add M成果 under the WeChat M空间 menu.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 15:21:42 +08:00

64 lines
1.8 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
achievementStatsInternals,
mergeAchievementStatsForPage,
} from './mindspace-page-achievement-stats.mjs';
const { buildPageMatchKeys, mergeAchievementStatsForPage: mergePage, pathnameFromUrl } =
achievementStatsInternals;
test('buildPageMatchKeys includes workspace and publication paths', () => {
const keys = buildPageMatchKeys(
{
id: 'page-1',
workspaceRelativePath: 'public/demo.html',
publicationUrl: 'https://m.tkmind.cn/u/john/pages/demo',
},
'user-1',
);
assert.ok(keys.has('page-1'));
assert.ok(keys.has('/MindSpace/user-1/public/demo.html'));
assert.ok(keys.has('/u/john/pages/demo'));
});
test('mergeAchievementStatsForPage prefers umami metrics when matched', () => {
const umamiByPath = new Map([
['/MindSpace/user-1/public/demo.html', { views: 12, clicks: 3 }],
]);
const merged = mergePage(
{
id: 'page-1',
title: 'Demo',
workspaceRelativePath: 'public/demo.html',
viewCount: 5,
},
umamiByPath,
'user-1',
);
assert.equal(merged.viewCount, 12);
assert.equal(merged.clickCount, 3);
assert.equal(merged.statsSource, 'umami');
});
test('mergeAchievementStatsForPage keeps publication views without umami match', () => {
const merged = mergeAchievementStatsForPage(
{
id: 'page-2',
title: 'Draft',
viewCount: 7,
},
new Map(),
'user-2',
);
assert.equal(merged.viewCount, 7);
assert.equal(merged.clickCount, null);
assert.equal(merged.statsSource, 'publication');
});
test('pathnameFromUrl normalizes absolute and relative urls', () => {
assert.equal(pathnameFromUrl('https://m.tkmind.cn/u/john/pages/demo/'), '/u/john/pages/demo');
assert.equal(pathnameFromUrl('/MindSpace/u/public/page.html'), '/MindSpace/u/public/page.html');
});