feat(analytics): add SEO/GEO page dashboard and retire Rybbit SSO
Expose Umami memind-pages discoveryChannel data in adm with a public-page style table, proxy it via admin-api, and remove Rybbit configuration paths. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
|
||||
import { fetchMemindDiscoveryPages } from './umami-analytics.mjs';
|
||||
|
||||
test('fetchMemindDiscoveryPages rejects invalid discoveryChannel', async () => {
|
||||
await assert.rejects(
|
||||
() => fetchMemindDiscoveryPages(
|
||||
{ discoveryChannel: 'direct' },
|
||||
{ env: { UMAMI_ADMIN_PASSWORD: 'secret' }, analyticsConfig: { websiteId: 'site-1' } },
|
||||
),
|
||||
/discoveryChannel 必须是 seo 或 geo/,
|
||||
);
|
||||
});
|
||||
|
||||
test('fetchMemindDiscoveryPages rejects missing website id', async () => {
|
||||
await assert.rejects(
|
||||
() => fetchMemindDiscoveryPages(
|
||||
{ discoveryChannel: 'seo', startAt: '1', endAt: '2' },
|
||||
{ env: { UMAMI_ADMIN_PASSWORD: 'secret' }, analyticsConfig: {} },
|
||||
),
|
||||
/未配置 Umami Website ID/,
|
||||
);
|
||||
});
|
||||
|
||||
test('fetchMemindDiscoveryPages rejects missing admin password', async () => {
|
||||
await assert.rejects(
|
||||
() => fetchMemindDiscoveryPages(
|
||||
{ discoveryChannel: 'geo', startAt: '1', endAt: '2' },
|
||||
{ env: {}, analyticsConfig: { websiteId: 'site-1' } },
|
||||
),
|
||||
/未配置 UMAMI_ADMIN_PASSWORD/,
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user