Files
probably-rendering-one-more…/tests/skill-docs.test.ts
T
codex-bot 83e19d31ca
PROMPT Docker CI and deployment / verify-and-deploy (push) Successful in 15m54s
Publish photo-to-shadow-puppet skill with shared linked documentation
2026-10-23 17:26:46 +08:00

29 lines
2.2 KiB
TypeScript

import {test} from 'node:test';
import assert from 'node:assert/strict';
import {skillDocuments,skillResources,documentMarkdown,getSkill,skillDocumentMarkdown,skillCatalog} from '../src/content/skills/catalog';
test('human and agent documents share a complete linked resource registry',()=>{
for(const doc of skillDocuments){const md=documentMarkdown(doc.id)!;assert.ok(md.startsWith('# '+doc.title));for(const block of doc.blocks){if(block.text)assert.ok(md.includes(block.text));for(const id of block.refs||[])assert.ok(skillResources.some(r=>r.id===id))}assert.ok(!md.includes('/p/street-people-'));}
assert.equal(documentMarkdown('missing'),null);assert.equal(new Set(skillResources.map(r=>r.id)).size,skillResources.length);
for(const doc of skillDocuments)assert.ok(skillResources.some(r=>r.id===doc.id&&r.human&&r.href.endsWith('.md')));
});
test('each registered skill resolves its own entry, documents and API resources without leaking another skill',()=>{
for(const card of skillCatalog){
const skill=getSkill(card.id)!;assert.ok(skill);assert.equal(skill.id,card.id);
assert.equal(new Set(skill.resources.map(r=>r.id)).size,skill.resources.length);
for(const doc of skill.documents){
const md=skillDocumentMarkdown(card.id,doc.id)!;assert.ok(md.startsWith('# '+doc.title));
assert.ok(skill.resources.some(r=>r.id===doc.id&&r.kind==='document'&&r.human));
for(const block of doc.blocks){if(block.text)assert.ok(md.includes(block.text));for(const id of block.refs||[])assert.ok(skill.resources.some(r=>r.id===id),card.id+': '+id);}
}
}
assert.equal(getSkill('__proto__'),undefined);assert.equal(skillDocumentMarkdown('missing','index'),null);assert.equal(skillDocumentMarkdown('shadow-puppet','missing'),null);
const shadow=getSkill('shadow-puppet')!;
assert.equal(shadow.resources.filter(r=>r.kind==='document').length,5);
assert.equal(shadow.resources.filter(r=>r.kind==='image').length,2);
assert.equal(shadow.resources.find(r=>r.id==='upload-api')?.href,'/api/upload');
assert.equal(shadow.resources.find(r=>r.id==='media-api')?.template,true);
assert.ok(!skillDocumentMarkdown('shadow-puppet','index')!.includes('/skills/street-people/'));
assert.ok(!documentMarkdown('index')!.includes('/skills/shadow-puppet/'));
});