feat: sitemap pagination, HTML wrapper, and title from vkm:name
- Paginate sitemap using hydra:view['hydra:last'] (0-based item index model) - Select latest vkm:datePublished fragment per SearchResultItem - Cap sitemap at 50,000 URLs per sitemaps.org protocol - Wrap content fetch response in full HTML document (DOCTYPE, head, body) - Add <head><title> populated from vkm:name field - Remove oidcAuthFlow route (404 for unmatched paths) - All 51 tests passing Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -200,7 +200,7 @@ describe('sitemap endpoint', () => {
|
||||
describe('content fetch: happy path', () => {
|
||||
test('GET /?kmeURL=<mock-server> → 200 text/html with article body (SC-001 < 11s)', async () => {
|
||||
// Mock content server returning a valid article JSON-LD response
|
||||
const contentMock = await startMockServer(200, { 'vkm:articleBody': '<p>Contract test article</p>' });
|
||||
const contentMock = await startMockServer(200, { 'vkm:name': 'Contract Article', 'vkm:articleBody': '<p>Contract test article</p>' });
|
||||
|
||||
try {
|
||||
const redis = makeRedisFake();
|
||||
@@ -233,7 +233,9 @@ describe('content fetch: happy path', () => {
|
||||
res.headers['Content-Type'].startsWith('text/html'),
|
||||
`Content-Type was: ${res.headers['Content-Type']}`,
|
||||
);
|
||||
assert.strictEqual(res.body, '<p>Contract test article</p>');
|
||||
assert.ok(res.body.includes('<!DOCTYPE html>'), 'body should contain DOCTYPE');
|
||||
assert.ok(res.body.includes('<title>Contract Article</title>'), 'body should contain title');
|
||||
assert.ok(res.body.includes('<p>Contract test article</p>'), 'body should contain article content verbatim');
|
||||
assert.ok(elapsed < 11000, `Round-trip should be under 11 s, took ${elapsed}ms`);
|
||||
} finally {
|
||||
await contentMock.close();
|
||||
|
||||
Reference in New Issue
Block a user