Files
memind/mindspace-seo-notify.test.mjs
T

87 lines
2.5 KiB
JavaScript
Raw Normal View History

import assert from 'node:assert/strict';
import test from 'node:test';
import {
buildPublicationAbsoluteUrl,
createMindspaceSeoNotifyService,
resolveMindspaceBaiduSite,
} from './mindspace-seo-notify.mjs';
const indexablePublication = {
status: 'online',
accessMode: 'public',
userConfirmedAt: Date.now(),
publicUrl: '/u/john/pages/demo',
};
test('buildPublicationAbsoluteUrl resolves relative publication urls', () => {
assert.equal(
buildPublicationAbsoluteUrl('/u/john/pages/demo', {
H5_PUBLIC_BASE_URL: 'https://m.tkmind.cn',
}),
'https://m.tkmind.cn/u/john/pages/demo',
);
});
test('resolveMindspaceBaiduSite prefers explicit env', () => {
assert.equal(
resolveMindspaceBaiduSite({ MINDSPACE_BAIDU_SITE: 'm.tkmind.cn' }),
'm.tkmind.cn',
);
});
test('notifyPublicationSearchEngines skips when baidu push disabled', async () => {
const service = createMindspaceSeoNotifyService(
{},
{
env: { H5_PUBLIC_BASE_URL: 'https://m.tkmind.cn' },
loadMindSpaceConfigFn: async () => ({
seoGeo: { enabled: true, seo: { baiduPush: false } },
}),
},
);
const result = await service.notifyPublicationSearchEngines(indexablePublication);
assert.equal(result.reason, 'disabled');
});
test('notifyPublicationSearchEngines skips non-indexable publications', async () => {
const service = createMindspaceSeoNotifyService(
{},
{
loadMindSpaceConfigFn: async () => ({
seoGeo: { enabled: true, seo: { baiduPush: true } },
}),
},
);
const result = await service.notifyPublicationSearchEngines({
...indexablePublication,
accessMode: 'password',
});
assert.equal(result.reason, 'not_indexable');
});
test('notifyPublicationSearchEngines pings baidu for indexable publications', async () => {
const calls = [];
const service = createMindspaceSeoNotifyService(
{},
{
env: {
H5_PUBLIC_BASE_URL: 'https://m.tkmind.cn',
MINDSPACE_BAIDU_PUSH_TOKEN: 'token',
MINDSPACE_BAIDU_SITE: 'm.tkmind.cn',
},
loadMindSpaceConfigFn: async () => ({
seoGeo: { enabled: true, seo: { baiduPush: true } },
}),
plazaSeoFactory: () => ({
pingBaidu: async (urls) => {
calls.push(urls);
return { pushed: true, result: { success: 1 } };
},
}),
},
);
const result = await service.notifyPublicationSearchEngines(indexablePublication);
assert.equal(result.pushed, true);
assert.deepEqual(calls[0], ['https://m.tkmind.cn/u/john/pages/demo']);
});