This commit is contained in:
2026-05-10 16:20:29 +05:00
parent 67b7008bf3
commit 001587799c
9 changed files with 1036 additions and 680 deletions

132
tests/runStartupTests.js Normal file
View File

@@ -0,0 +1,132 @@
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');
}
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 };