Files
hotell777_260507/tests/runStartupTests.js
2026-05-10 21:42:31 +05:00

166 lines
9.3 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.
function runStartupTests(db, modules) {
return new Promise((resolve) => {
const results = [];
const tableHeader = '\n┌─────────────────────────────────────┬──────────┬──────────────────────────┐';
const tableRow = '├─────────────────────────────────────┼──────────┼──────────────────────────┤';
const tableFooter = '└─────────────────────────────────────┴──────────┴──────────────────────────┘';
console.log('\n========================================');
console.log(' ЗАПУСК ТЕСТОВ API ПРИ СТАРТЕ');
console.log('========================================');
console.log(tableHeader);
console.log('│ API Функция │ Статус │ Описание │');
console.log(tableRow);
function addResult(name, status, description) {
const statusText = status === 'OK' ? 'OK' : 'FAIL';
const paddedName = name.padEnd(37);
const paddedStatus = statusText.padEnd(8);
const paddedDesc = (description || '').padEnd(26);
console.log(`${paddedName}${paddedStatus}${paddedDesc}`);
results.push({ name, status, description });
}
try {
addResult('DB Connection', 'OK', 'SQLite connected');
db.get(`SELECT name FROM sqlite_master WHERE type='table' AND name='bookings'`, [], (err, row) => {
if (err || !row) {
addResult('Table: bookings', 'FAIL', 'Not found');
} else {
addResult('Table: bookings', 'OK', 'Exists');
}
db.get(`SELECT name FROM sqlite_master WHERE type='table' AND name='users'`, [], (err, row) => {
if (err || !row) {
addResult('Table: users', 'FAIL', 'Not found');
} else {
addResult('Table: users', 'OK', 'Exists');
}
db.get(`SELECT name FROM sqlite_master WHERE type='table' AND name='promocodes'`, [], (err, row) => {
if (err || !row) {
addResult('Table: promocodes', 'FAIL', 'Not found');
} else {
addResult('Table: promocodes', 'OK', 'Exists');
}
db.get(`SELECT name FROM sqlite_master WHERE type='table' AND name='rooms'`, [], (err, row) => {
if (err || !row) {
addResult('Table: rooms', 'FAIL', 'Not found');
} else {
addResult('Table: rooms', 'OK', 'Exists');
}
db.all(`SELECT COUNT(*) as cnt FROM users`, [], (err, rows) => {
if (err) {
addResult('Query: users count', 'FAIL', err.message.substring(0, 24));
} else {
addResult('Query: users count', 'OK', `Found ${rows[0].cnt} users`);
}
db.all(`SELECT COUNT(*) as cnt FROM bookings`, [], (err, rows) => {
if (err) {
addResult('Query: bookings count', 'FAIL', err.message.substring(0, 24));
} else {
addResult('Query: bookings count', 'OK', `Found ${rows[0].cnt} bookings`);
}
if (modules.auth) {
addResult('Module: auth', 'OK', 'Initialized');
} else {
addResult('Module: auth', 'FAIL', 'Not loaded');
}
if (modules.bookings) {
addResult('Module: bookings', 'OK', 'Initialized');
} else {
addResult('Module: bookings', 'FAIL', 'Not loaded');
}
if (modules.promocodes) {
addResult('Module: promocodes', 'OK', 'Initialized');
} else {
addResult('Module: promocodes', 'FAIL', 'Not loaded');
}
if (modules.rooms) {
addResult('Module: rooms', 'OK', 'Initialized');
} else {
addResult('Module: rooms', 'FAIL', 'Not loaded');
}
if (modules.users) {
addResult('Module: users', 'OK', 'Initialized');
} else {
addResult('Module: users', 'FAIL', 'Not loaded');
}
if (modules.adminBookings) {
addResult('Module: adminBookings', 'OK', 'Initialized');
} else {
addResult('Module: adminBookings', 'FAIL', 'Not loaded');
}
if (modules.settings) {
addResult('Module: settings', 'OK', 'Initialized');
} else {
addResult('Module: settings', 'FAIL', 'Not loaded');
}
if (modules.reviews) {
addResult('Module: reviews', 'OK', 'Initialized');
} else {
addResult('Module: reviews', 'FAIL', 'Not loaded');
}
if (modules.translations) {
addResult('Module: translations', 'OK', 'Initialized');
} else {
addResult('Module: translations', 'FAIL', 'Not loaded');
}
db.get(`SELECT name FROM sqlite_master WHERE type='table' AND name='settings'`, [], (err, row) => {
if (err || !row) {
addResult('Table: settings', 'FAIL', 'Not found');
} else {
addResult('Table: settings', 'OK', 'Exists');
}
db.get(`SELECT name FROM sqlite_master WHERE type='table' AND name='reviews'`, [], (err, row) => {
if (err || !row) {
addResult('Table: reviews', 'FAIL', 'Not found');
} else {
addResult('Table: reviews', 'OK', 'Exists');
}
console.log(tableFooter);
const passed = results.filter(r => r.status === 'OK').length;
const total = results.length;
const allPassed = passed === total;
console.log(`\nРезультат: ${passed}/${total} тестов пройдено`);
console.log(allPassed ? '✅ Все системы готовы к работе!' : '❌ Имеются проблемы - проверьте логи');
console.log('========================================\n');
resolve({ results, passed, total, allPassed });
});
});
});
});
});
});
});
});
} catch (error) {
addResult('Critical Error', 'FAIL', error.message.substring(0, 24));
console.log(tableFooter);
console.log(`\n❌ Критическая ошибка: ${error.message}`);
resolve({ results, passed: 0, total: results.length, allPassed: false });
}
});
}
module.exports = { runStartupTests };