Files
DLE/backend/services/testNewBots.js
2025-10-08 18:01:14 +03:00

214 lines
6.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
* All rights reserved.
*
* This software is proprietary and confidential.
* Unauthorized copying, modification, or distribution is prohibited.
*
* For licensing inquiries: info@hb3-accelerator.com
* Website: https://hb3-accelerator.com
* GitHub: https://github.com/HB3-ACCELERATOR
*/
const logger = require('../utils/logger');
const botManager = require('./botManager');
const WebBot = require('./webBot');
const TelegramBot = require('./telegramBot');
const EmailBot = require('./emailBot');
/**
* Тестовый скрипт для проверки новой архитектуры ботов
* Используется для отладки и тестирования ботов
*/
/**
* Тест Web Bot
*/
async function testWebBot() {
console.log('\n=== ТЕСТ WEB BOT ===');
try {
const webBot = new WebBot();
// Инициализация
const initResult = await webBot.initialize();
console.log('✓ Инициализация:', initResult);
// Статус
const status = webBot.getStatus();
console.log('✓ Статус:', status);
// Тестовое сообщение
const testMessage = {
userId: 1,
content: 'Тестовое сообщение',
channel: 'web'
};
console.log('✓ Web Bot тест пройден');
return true;
} catch (error) {
console.error('✗ Ошибка Web Bot:', error.message);
return false;
}
}
/**
* Тест Telegram Bot
*/
async function testTelegramBot() {
console.log('\n=== ТЕСТ TELEGRAM BOT ===');
try {
const telegramBot = new TelegramBot();
// Инициализация
const initResult = await telegramBot.initialize();
console.log('✓ Инициализация:', initResult);
// Статус
const status = telegramBot.getStatus ? telegramBot.getStatus() : {
isInitialized: telegramBot.isInitialized,
status: telegramBot.status
};
console.log('✓ Статус:', status);
console.log('✓ Telegram Bot тест пройден');
return true;
} catch (error) {
console.error('✗ Ошибка Telegram Bot:', error.message);
return false;
}
}
/**
* Тест Email Bot
*/
async function testEmailBot() {
console.log('\n=== ТЕСТ EMAIL BOT ===');
try {
const emailBot = new EmailBot();
// Инициализация
const initResult = await emailBot.initialize();
console.log('✓ Инициализация:', initResult);
// Статус
const status = emailBot.getStatus ? emailBot.getStatus() : {
isInitialized: emailBot.isInitialized,
status: emailBot.status
};
console.log('✓ Статус:', status);
console.log('✓ Email Bot тест пройден');
return true;
} catch (error) {
console.error('✗ Ошибка Email Bot:', error.message);
return false;
}
}
/**
* Тест Bot Manager
*/
async function testBotManager() {
console.log('\n=== ТЕСТ BOT MANAGER ===');
try {
// Инициализация
await botManager.initialize();
console.log('✓ BotManager инициализирован');
// Проверка готовности
const isReady = botManager.isReady();
console.log('✓ isReady:', isReady);
// Получение статуса
const status = botManager.getStatus();
console.log('✓ Статус всех ботов:', status);
// Получение конкретных ботов
const webBot = botManager.getBot('web');
const telegramBot = botManager.getBot('telegram');
const emailBot = botManager.getBot('email');
console.log('✓ Web Bot:', webBot ? 'OK' : 'NOT FOUND');
console.log('✓ Telegram Bot:', telegramBot ? 'OK' : 'NOT FOUND');
console.log('✓ Email Bot:', emailBot ? 'OK' : 'NOT FOUND');
console.log('✓ Bot Manager тест пройден');
return true;
} catch (error) {
console.error('✗ Ошибка Bot Manager:', error.message);
return false;
}
}
/**
* Запустить все тесты
*/
async function runAllTests() {
console.log('╔═══════════════════════════════════════╗');
console.log('║ ТЕСТИРОВАНИЕ НОВОЙ АРХИТЕКТУРЫ БОТОВ ║');
console.log('╚═══════════════════════════════════════╝');
const results = {
webBot: false,
telegramBot: false,
emailBot: false,
botManager: false
};
try {
// Тестируем каждый компонент
results.webBot = await testWebBot();
results.telegramBot = await testTelegramBot();
results.emailBot = await testEmailBot();
results.botManager = await testBotManager();
// Итоги
console.log('\n╔═══════════════════════════════════════╗');
console.log('║ ИТОГИ ТЕСТИРОВАНИЯ ║');
console.log('╚═══════════════════════════════════════╝');
console.log('Web Bot: ', results.webBot ? '✓ PASS' : '✗ FAIL');
console.log('Telegram Bot: ', results.telegramBot ? '✓ PASS' : '✗ FAIL');
console.log('Email Bot: ', results.emailBot ? '✓ PASS' : '✗ FAIL');
console.log('Bot Manager: ', results.botManager ? '✓ PASS' : '✗ FAIL');
const allPassed = Object.values(results).every(r => r === true);
console.log('\nОБЩИЙ РЕЗУЛЬТАТ:', allPassed ? '✓ ВСЕ ТЕСТЫ ПРОЙДЕНЫ' : '✗ ЕСТЬ ОШИБКИ');
return allPassed;
} catch (error) {
logger.error('[TestNewBots] Критическая ошибка:', error);
return false;
}
}
// Если запущен напрямую как скрипт
if (require.main === module) {
runAllTests()
.then(success => {
process.exit(success ? 0 : 1);
})
.catch(error => {
console.error('КРИТИЧЕСКАЯ ОШИБКА:', error);
process.exit(1);
});
}
module.exports = {
testWebBot,
testTelegramBot,
testEmailBot,
testBotManager,
runAllTests
};