UNPKG

n8n-bookstack-agent-tool

Version:

Comprehensive BookStack API integration tool for n8n AI Agent with MCP framework compatibility

132 lines • 6.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExportOperationsTester = void 0; const index_js_1 = require("../index.js"); class ExportOperationsTester { constructor() { const config = { baseUrl: 'https://wiki.l7cloud.io', authType: 'bearer', token: 'EnRkbVwqzNSyLaVo7olU8Wx8umGznKuE', tokenSecret: 'TyaJ0JHAenwRIgScmsffrCeSIlon4fZ2', timeout: 30000, retryAttempts: 3, retryDelay: 1000 }; this.tool = new index_js_1.BookStackN8nTool(config); } async runExportTests() { console.log('\nšŸ“„ COMPREHENSIVE EXPORT OPERATIONS TESTS'); console.log('========================================'); await this.testBookExports(); await this.validateExportFormats(); console.log('\nāœ… Export operations tests completed'); } async testBookExports() { console.log('\nšŸ“š Testing Book Export Operations...'); const exportFormats = [ { command: 'exportBookHtml', format: 'HTML', expectedContent: '<html' }, { command: 'exportBookPdf', format: 'PDF', expectedContent: '%PDF' }, { command: 'exportBookMarkdown', format: 'Markdown', expectedContent: '#' }, { command: 'exportBookPlaintext', format: 'Plain Text', expectedContent: '' } ]; const testBookIds = [4, 6, 7]; let successfulExports = 0; let totalExports = 0; for (const bookId of testBookIds) { console.log(`\n Testing exports for Book ID ${bookId}:`); for (const exportTest of exportFormats) { totalExports++; try { console.log(` Testing ${exportTest.command}...`); const result = await this.tool.execCommand(exportTest.command, { id: bookId }); if (result && typeof result === 'string') { const contentLength = result.length; const hasExpectedContent = exportTest.expectedContent ? result.includes(exportTest.expectedContent) : true; console.log(` āœ… ${exportTest.format}: Success (${contentLength} chars)`); if (hasExpectedContent) { console.log(` āœ… Content validation: Contains expected ${exportTest.format} markers`); } else { console.log(` āš ļø Content validation: Missing expected ${exportTest.format} markers`); } successfulExports++; } else { console.log(` āš ļø ${exportTest.format}: Unexpected result type`); } } catch (error) { console.log(` āŒ ${exportTest.format}: ${error.message}`); } } } console.log(`\nšŸ“Š Export Summary: ${successfulExports}/${totalExports} exports successful`); } async validateExportFormats() { console.log('\nšŸ” Validating Export Format Quality...'); try { console.log(' Testing HTML export format validation...'); const htmlResult = await this.tool.execCommand('exportBookHtml', { id: 4 }); if (typeof htmlResult === 'string') { const hasHtmlStructure = htmlResult.includes('<html') && htmlResult.includes('</html>'); const hasMetadata = htmlResult.includes('<title>') || htmlResult.includes('<meta'); const hasContent = htmlResult.length > 100; console.log(` āœ… HTML Structure: ${hasHtmlStructure ? 'Valid' : 'Invalid'}`); console.log(` āœ… Metadata: ${hasMetadata ? 'Present' : 'Missing'}`); console.log(` āœ… Content Length: ${hasContent ? 'Adequate' : 'Too short'} (${htmlResult.length} chars)`); } } catch (error) { console.log(` āŒ HTML validation failed: ${error.message}`); } try { console.log(' Testing Markdown export format validation...'); const markdownResult = await this.tool.execCommand('exportBookMarkdown', { id: 4 }); if (typeof markdownResult === 'string') { const hasMarkdownHeaders = markdownResult.includes('#'); const hasContent = markdownResult.length > 50; const isPlainText = !markdownResult.includes('<html'); console.log(` āœ… Markdown Headers: ${hasMarkdownHeaders ? 'Present' : 'Missing'}`); console.log(` āœ… Plain Text Format: ${isPlainText ? 'Valid' : 'Contains HTML'}`); console.log(` āœ… Content Length: ${hasContent ? 'Adequate' : 'Too short'} (${markdownResult.length} chars)`); } } catch (error) { console.log(` āŒ Markdown validation failed: ${error.message}`); } try { console.log(' Testing PDF export format validation...'); const pdfResult = await this.tool.execCommand('exportBookPdf', { id: 4 }); if (typeof pdfResult === 'string') { const isPdfFormat = pdfResult.startsWith('%PDF'); const hasContent = pdfResult.length > 1000; console.log(` āœ… PDF Header: ${isPdfFormat ? 'Valid' : 'Invalid'}`); console.log(` āœ… Content Size: ${hasContent ? 'Adequate' : 'Too small'} (${pdfResult.length} chars)`); } } catch (error) { console.log(` āŒ PDF validation failed: ${error.message}`); } try { console.log(' Testing Plain Text export format validation...'); const textResult = await this.tool.execCommand('exportBookPlaintext', { id: 4 }); if (typeof textResult === 'string') { const isPlainText = !textResult.includes('<') && !textResult.includes('%PDF'); const hasContent = textResult.length > 20; console.log(` āœ… Plain Text Format: ${isPlainText ? 'Valid' : 'Contains markup'}`); console.log(` āœ… Content Length: ${hasContent ? 'Adequate' : 'Too short'} (${textResult.length} chars)`); } } catch (error) { console.log(` āŒ Plain Text validation failed: ${error.message}`); } } } exports.ExportOperationsTester = ExportOperationsTester; if (require.main === module) { const tester = new ExportOperationsTester(); tester.runExportTests().catch(console.error); } //# sourceMappingURL=export-operations-test.js.map