Files
tilbudgivern/backend/check-packages.js
alexpolo1 bdb9e524db Implement manual and automated tests for auto-save countdown feature
- Added a comprehensive manual testing guide for the countdown functionality in `test_countdown_manual.md`.
- Developed a detailed Selenium test suite in `test_countdown_selenium.py` to verify countdown behavior, including server accessibility, login, countdown progression, and UI elements.
- Created a minimal Selenium test version in `test_countdown_selenium_minimal.py` for quick checks without complex setup.
- Introduced a verification script in `test_countdown_verification.py` to analyze code correctness, including server checks, build file existence, and countdown logic.
2025-11-14 11:28:58 +00:00

37 lines
1.6 KiB
JavaScript

require('dotenv').config();
const mysql = require('mysql2/promise');
(async () => {
const conn = await mysql.createConnection({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME
});
const [packages] = await conn.execute('SELECT id, name, category FROM material_packages WHERE is_active = 1 ORDER BY id');
const [withMaterials] = await conn.execute('SELECT DISTINCT package_id FROM package_materials');
const materialPackageIds = new Set(withMaterials.map(r => r.package_id));
const [withTasks] = await conn.execute('SELECT DISTINCT package_id FROM package_tasks');
const taskPackageIds = new Set(withTasks.map(r => r.package_id));
const pkgsNoMaterials = packages.filter(p => !materialPackageIds.has(p.id));
const pkgsNoTasks = packages.filter(p => !taskPackageIds.has(p.id));
const complete = packages.filter(p => materialPackageIds.has(p.id) && taskPackageIds.has(p.id));
console.log('❌ PAKKER UDEN MATERIALER:');
console.log(pkgsNoMaterials.length + ' pakker mangler materialer:\n');
pkgsNoMaterials.forEach(p => console.log(' ID ' + p.id + ': ' + p.name + ' (' + p.category + ')'));
console.log('\n\n❌ PAKKER UDEN OPGAVER:');
console.log(pkgsNoTasks.length + ' pakker mangler opgaver:\n');
pkgsNoTasks.forEach(p => console.log(' ID ' + p.id + ': ' + p.name + ' (' + p.category + ')'));
console.log('\n\n✅ PAKKER MED BÅDE MATERIALER OG OPGAVER:');
console.log(complete.length + ' komplette pakker:\n');
complete.forEach(p => console.log(' ID ' + p.id + ': ' + p.name));
await conn.end();
})();