UNPKG

dbx-mcp-server

Version:

A Model Context Protocol server for Dropbox integration with AI-powered PDF analysis, multi-directory indexing, and parallel processing

126 lines 5 kB
/** * Shared test results tracker for consistent reporting across test files */ import { logger } from './test-logger.js'; class TestResultsTracker { constructor() { this.results = {}; this.startTime = new Date(); } registerTest(testName, file) { this.results[`${file}:${testName}`] = { passed: false, error: null, startTime: new Date(), endTime: null, duration: null, details: {}, file }; } updateTestResult(testName, file, updates) { const key = `${file}:${testName}`; if (this.results[key]) { this.results[key] = { ...this.results[key], ...updates }; } } markTestPassed(testName, file, details = {}) { const key = `${file}:${testName}`; if (this.results[key]) { this.results[key].passed = true; this.results[key].endTime = new Date(); this.results[key].duration = this.results[key].endTime.getTime() - (this.results[key].startTime?.getTime() || 0); this.results[key].details = { ...this.results[key].details, ...details }; } } markTestFailed(testName, file, error, details = {}) { const key = `${file}:${testName}`; if (this.results[key]) { this.results[key].passed = false; this.results[key].error = error; this.results[key].endTime = new Date(); this.results[key].duration = this.results[key].endTime.getTime() - (this.results[key].startTime?.getTime() || 0); this.results[key].details = { ...this.results[key].details, ...details }; } } addTestDetails(testName, file, details) { const key = `${file}:${testName}`; if (this.results[key]) { this.results[key].details = { ...this.results[key].details, ...details }; } } getTestResult(testName, file) { const key = `${file}:${testName}`; return this.results[key] || null; } getAllResults() { return this.results; } getResultsByFile(file) { const fileResults = {}; Object.entries(this.results).forEach(([key, result]) => { if (result.file === file) { fileResults[key] = result; } }); return fileResults; } printSummary(timestamp, folderName = '') { const endTime = new Date(); const totalDuration = endTime.getTime() - this.startTime.getTime(); const totalTests = Object.keys(this.results).length; const passedTests = Object.values(this.results).filter(r => r.passed).length; logger.log('\n=== Test Summary ==='); logger.log(`Run ID: ${timestamp}`); if (folderName) { logger.log(`Test Folder: ${folderName}`); } logger.log('-------------------'); // Group results by file const fileGroups = {}; Object.values(this.results).forEach(result => { if (!fileGroups[result.file]) { fileGroups[result.file] = []; } fileGroups[result.file].push(result); }); // Print results by file Object.entries(fileGroups).forEach(([file, results]) => { logger.log(`\n[File: ${file}]`); results.forEach(result => { const testName = Object.keys(this.results).find(key => this.results[key] === result)?.split(':')[1] || 'Unknown Test'; const icon = result.passed ? '✅' : '❌'; const status = result.passed ? 'Success' : 'Failed'; const duration = result.duration ? `${result.duration}ms` : 'N/A'; logger.log(`\n${icon} ${testName}`); logger.log(` Status: ${status}`); logger.log(` Duration: ${duration}`); if (result.error) { logger.log(` Error: ${result.error.message}`); } if (Object.keys(result.details).length > 0) { logger.log(' Details:'); Object.entries(result.details).forEach(([key, value]) => { logger.log(` ${key}: ${value}`); }); } }); }); logger.log('\n=== Summary Statistics ==='); logger.log(`Total Tests: ${totalTests}`); logger.log(`Passed: ${passedTests}`); logger.log(`Failed: ${totalTests - passedTests}`); logger.log(`Success Rate: ${((passedTests / totalTests) * 100).toFixed(1)}%`); logger.log(`Total Duration: ${totalDuration}ms`); logger.log('==================\n'); } reset() { this.results = {}; this.startTime = new Date(); } } // Singleton instance to be shared across test files export const testResultsTracker = new TestResultsTracker(); //# sourceMappingURL=test-results-tracker.js.map