- Removed unused empty nodes-v2.db file - Updated NodeDocumentationService to use nodes.db as default - Updated test file to use correct database - Added secret scanning exclusion for database files This prevents confusion about which database is actually used and removes the file that GitHub's security advisor was flagging. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
88 lines
3.4 KiB
JavaScript
88 lines
3.4 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
const { NodeDocumentationService } = require('../dist/services/node-documentation-service');
|
||
|
||
async function testService() {
|
||
console.log('=== Testing Node Documentation Service ===\n');
|
||
|
||
// Use the main database
|
||
const service = new NodeDocumentationService('./data/nodes.db');
|
||
|
||
try {
|
||
// Test 1: List nodes
|
||
console.log('1️⃣ Testing list nodes...');
|
||
const nodes = await service.listNodes();
|
||
console.log(` Found ${nodes.length} nodes in database`);
|
||
|
||
if (nodes.length === 0) {
|
||
console.log('\n⚠️ No nodes found. Running rebuild...');
|
||
const stats = await service.rebuildDatabase();
|
||
console.log(` Rebuild complete: ${stats.successful} nodes stored`);
|
||
}
|
||
|
||
// Test 2: Get specific node info (IF node)
|
||
console.log('\n2️⃣ Testing get node info for "If" node...');
|
||
const ifNode = await service.getNodeInfo('n8n-nodes-base.if');
|
||
|
||
if (ifNode) {
|
||
console.log(' ✅ Found IF node:');
|
||
console.log(` Name: ${ifNode.displayName}`);
|
||
console.log(` Description: ${ifNode.description}`);
|
||
console.log(` Has source code: ${!!ifNode.sourceCode}`);
|
||
console.log(` Source code length: ${ifNode.sourceCode?.length || 0} bytes`);
|
||
console.log(` Has documentation: ${!!ifNode.documentation}`);
|
||
console.log(` Has example: ${!!ifNode.exampleWorkflow}`);
|
||
|
||
if (ifNode.exampleWorkflow) {
|
||
console.log('\n 📋 Example workflow:');
|
||
console.log(JSON.stringify(ifNode.exampleWorkflow, null, 2).substring(0, 500) + '...');
|
||
}
|
||
} else {
|
||
console.log(' ❌ IF node not found');
|
||
}
|
||
|
||
// Test 3: Search nodes
|
||
console.log('\n3️⃣ Testing search functionality...');
|
||
|
||
// Search for webhook nodes
|
||
const webhookNodes = await service.searchNodes({ query: 'webhook' });
|
||
console.log(`\n 🔍 Search for "webhook": ${webhookNodes.length} results`);
|
||
webhookNodes.slice(0, 3).forEach(node => {
|
||
console.log(` - ${node.displayName} (${node.nodeType})`);
|
||
});
|
||
|
||
// Search for HTTP nodes
|
||
const httpNodes = await service.searchNodes({ query: 'http' });
|
||
console.log(`\n 🔍 Search for "http": ${httpNodes.length} results`);
|
||
httpNodes.slice(0, 3).forEach(node => {
|
||
console.log(` - ${node.displayName} (${node.nodeType})`);
|
||
});
|
||
|
||
// Test 4: Get statistics
|
||
console.log('\n4️⃣ Testing database statistics...');
|
||
const stats = service.getStatistics();
|
||
console.log(' 📊 Database stats:');
|
||
console.log(` Total nodes: ${stats.totalNodes}`);
|
||
console.log(` Nodes with docs: ${stats.nodesWithDocs}`);
|
||
console.log(` Nodes with examples: ${stats.nodesWithExamples}`);
|
||
console.log(` Trigger nodes: ${stats.triggerNodes}`);
|
||
console.log(` Webhook nodes: ${stats.webhookNodes}`);
|
||
console.log(` Total packages: ${stats.totalPackages}`);
|
||
|
||
// Test 5: Category filtering
|
||
console.log('\n5️⃣ Testing category filtering...');
|
||
const coreNodes = await service.searchNodes({ category: 'Core Nodes' });
|
||
console.log(` Found ${coreNodes.length} core nodes`);
|
||
|
||
console.log('\n✅ All tests completed!');
|
||
|
||
} catch (error) {
|
||
console.error('\n❌ Test failed:', error);
|
||
process.exit(1);
|
||
} finally {
|
||
service.close();
|
||
}
|
||
}
|
||
|
||
// Run tests
|
||
testService().catch(console.error); |