Files
probably-rendering-one-more…/apps/waterfall-wiki/tests/guidance.test.ts
T
codex-bot db4b00bad0
waterfall-wiki CI and deployment / verify-and-deploy (pull_request) Has been cancelled
Connect public agent discovery to standalone versioned guidance
2026-10-29 17:31:42 +08:00

17 lines
1.5 KiB
TypeScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {guides,findGuide,guidanceXml} from '../src/content/guides/catalog';
test('every conditional link resolves to its exact revision',()=>{for(const g of guides){assert.ok(g.body&&g.applies&&g.summary);for(const l of g.links){assert.ok(findGuide(l.target,l.revision),`${g.id} -> ${l.target}`);assert.ok(l.when);}}});
test('missing fixed revisions do not silently resolve latest',()=>{assert.equal(findGuide(guides[0].id,999),undefined);assert.equal(findGuide('missing'),undefined);});
test('XML escapes text and attribute markup without introducing entities',()=>{const g={...guides[0],title:'<script> & "quoted"',links:[{...guides[0].links[0],when:'a" b< c&'}]};const xml=guidanceXml(g);assert.ok(xml.includes('&lt;script&gt; &amp; &quot;quoted&quot;'));assert.ok(xml.includes('when="a&quot; b&lt; c&amp;"'));assert.ok(!xml.includes('<script>'));assert.ok(!xml.includes('<!DOCTYPE'));});
import {linkedGuidanceIndex} from '../src/lib/guidance-discovery';
test('agent entry discovers both corpora and fixes adoption scope',()=>{
const entry=linkedGuidanceIndex();
for(const path of ['/api/documents','/api/guides','/protocol'])assert.ok(entry.includes(path));
for(const guide of guides)assert.ok(entry.includes(`/api/guides/${guide.id}?revision=${guide.revision}&format=xml`));
assert.ok(entry.includes('(id, revision)'));
assert.ok(entry.includes('8 篇、深度 3 层'));
assert.ok(!entry.includes('/skills/index.md'));
});