85 lines
2.2 KiB
JavaScript
Executable File
85 lines
2.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Tests for fetch-docs.js
|
|
*/
|
|
|
|
const { buildContext7Url, getUrlVariations } = require('../fetch-docs');
|
|
|
|
// Test counter
|
|
let passed = 0;
|
|
let failed = 0;
|
|
|
|
function assert(condition, message) {
|
|
if (condition) {
|
|
console.log(`✓ ${message}`);
|
|
passed++;
|
|
} else {
|
|
console.error(`✗ ${message}`);
|
|
failed++;
|
|
}
|
|
}
|
|
|
|
function assertEqual(actual, expected, message) {
|
|
if (actual === expected) {
|
|
console.log(`✓ ${message}`);
|
|
passed++;
|
|
} else {
|
|
console.error(`✗ ${message}`);
|
|
console.error(` Expected: ${expected}`);
|
|
console.error(` Actual: ${actual}`);
|
|
failed++;
|
|
}
|
|
}
|
|
|
|
console.log('Running fetch-docs.js tests...\n');
|
|
|
|
// Test buildContext7Url
|
|
console.log('## Testing buildContext7Url()');
|
|
|
|
assertEqual(
|
|
buildContext7Url('vercel/next.js'),
|
|
'https://context7.com/vercel/next.js/llms.txt',
|
|
'Build URL for GitHub repo'
|
|
);
|
|
|
|
assertEqual(
|
|
buildContext7Url('vercel/next.js', 'cache'),
|
|
'https://context7.com/vercel/next.js/llms.txt?topic=cache',
|
|
'Build URL with topic parameter'
|
|
);
|
|
|
|
assertEqual(
|
|
buildContext7Url('shadcn-ui/ui', 'date'),
|
|
'https://context7.com/shadcn-ui/ui/llms.txt?topic=date',
|
|
'Build URL for shadcn with topic'
|
|
);
|
|
|
|
// Test getUrlVariations
|
|
console.log('\n## Testing getUrlVariations()');
|
|
|
|
async function testUrlVariations() {
|
|
const urls1 = await getUrlVariations('next.js', 'cache');
|
|
assert(urls1.length >= 2, 'Returns multiple URL variations with topic');
|
|
assert(urls1[0].includes('?topic=cache'), 'First URL has topic parameter');
|
|
assert(!urls1[1].includes('?topic='), 'Second URL has no topic parameter');
|
|
|
|
const urls2 = await getUrlVariations('shadcn/ui');
|
|
assert(urls2.length >= 1, 'Returns URL variations without topic');
|
|
assert(!urls2[0].includes('?topic='), 'URL has no topic parameter');
|
|
|
|
const urls3 = await getUrlVariations('astro', 'routing');
|
|
assert(urls3.length >= 2, 'Returns variations for known library');
|
|
assertEqual(urls3[0], 'https://context7.com/withastro/astro/llms.txt?topic=routing', 'Maps Astro correctly');
|
|
}
|
|
|
|
testUrlVariations().then(() => {
|
|
// Summary
|
|
console.log('\n## Test Summary');
|
|
console.log(`Passed: ${passed}`);
|
|
console.log(`Failed: ${failed}`);
|
|
console.log(`Total: ${passed + failed}`);
|
|
|
|
process.exit(failed > 0 ? 1 : 0);
|
|
});
|