feat: add protocol explorer with catalogs and live playground
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { catalogPages, catalogs } from '../src/lib/catalog.ts';
|
||||
|
||||
const rustRepository = 'https://gitea.hareworks.net/Hare/wip-rs';
|
||||
|
||||
test('Sources lists only the confirmed documentation and Rust repositories', () => {
|
||||
assert.deepEqual(catalogs.sources.entries.map((entry) => [entry.name, entry.links]), [
|
||||
['wip-reference', [{ label: 'Source', href: 'https://gitea.hareworks.net/Hare/wip-reference' }]],
|
||||
['wip-rs', [{ label: 'Source', href: rustRepository }]],
|
||||
]);
|
||||
assert.deepEqual(catalogPages.map((page) => [page.path, page.title]), [['/sources', 'Sources'], ['/packages', 'Packages']]);
|
||||
});
|
||||
|
||||
test('Packages retains the seven publishable Rust crates in README order with manifest descriptions', () => {
|
||||
assert.deepEqual(catalogs.packages.entries.map((entry) => [entry.name, entry.description]), [
|
||||
['wip-protocol', 'Transport-independent logical model and validation for WIP'],
|
||||
['wip-interface-macros', 'Procedural macros for WIP interface declarations and DTO codecs'],
|
||||
['wip-interface', 'Public Rust authoring API for WIP interfaces and operation value codecs'],
|
||||
['wip-host', 'Host-side object publication and operation dispatch for WIP'],
|
||||
['wip-http', 'Framework-independent standard WIP over HTTP v1 binding'],
|
||||
['wip-client', 'Presentation-independent stateful WIP client runtime'],
|
||||
['wip-text-view', 'Standalone Object and Interface Text View signatures for WIP'],
|
||||
]);
|
||||
for (const entry of catalogs.packages.entries) {
|
||||
assert.deepEqual(entry.links, [
|
||||
{ label: 'Source', href: `${rustRepository}/src/branch/master/crates/${entry.name}` },
|
||||
{ label: 'Workspace README', href: `${rustRepository}/src/branch/master/README.md` },
|
||||
]);
|
||||
assert.equal('version' in entry, false);
|
||||
assert.ok(!['wip-fs-server', 'wip-tui', 'wip-public-api-example', 'wip-site-worldspace', 'wip-browser'].includes(entry.name));
|
||||
}
|
||||
assert.match(catalogs.packages.description, /公開状況・公開バージョンを示すものではありません/);
|
||||
assert.ok(!JSON.stringify(catalogs).includes('crates.io'));
|
||||
assert.ok(!JSON.stringify(catalogs).includes('docs.rs'));
|
||||
});
|
||||
Reference in New Issue
Block a user