Files
help_desk/scripts/test_qr_flow.js
T

57 lines
2.2 KiB
JavaScript

const HerramientaSet = require('../models/HerramientaSet');
const HerramientaAsignacion = require('../models/HerramientaAsignacion');
const QRCode = require('qrcode');
async function testQrFlow() {
console.log('=== TEST DE FLUJO DE CÓDIGOS QR Y MANIFIESTO HTML ===');
const companyId = 1;
// 1. Obtener Sets existentes
console.log('1. Consultando sets de herramientas de Telcotronics...');
const sets = await HerramientaSet.findAll(companyId);
if (sets.length === 0) {
throw new Error('No hay sets en Telcotronics para probar');
}
const testSet = sets[0];
console.log(` ✓ Set encontrado: "${testSet.nombre}" (ID: ${testSet.id}, Código: ${testSet.codigo})`);
console.log(` ✓ Token QR: ${testSet.qr_token}`);
if (!testSet.qr_token) {
throw new Error('El set no tiene qr_token');
}
// 2. Probar findByToken
console.log('2. Buscando set mediante findByToken(qr_token)...');
const setByToken = await HerramientaSet.findByToken(testSet.qr_token);
if (!setByToken) {
throw new Error('findByToken retornó null');
}
console.log(` ✓ Set recuperado: ${setByToken.nombre} | Empresa: ${setByToken.company_name} | Herramientas: ${setByToken.herramientas.length}`);
console.log(` ✓ Estado custodia actual: ${setByToken.custodia ? 'EN CUSTODIA de ' + setByToken.custodia.tecnico_nombre : 'DISPONIBLE EN BODEGA'}`);
// 3. Generar código QR con la librería qrcode
console.log('3. Generando código QR en formato Data URL...');
const scanUrl = `https://soporte.sigmac.app/qr/set/${testSet.qr_token}`;
const qrDataUrl = await QRCode.toDataURL(scanUrl, {
width: 260,
margin: 1,
color: { dark: '#000000', light: '#ffffff' }
});
if (!qrDataUrl.startsWith('data:image/png;base64,')) {
throw new Error('El QR generado no es un Data URL de PNG válido');
}
console.log(` ✓ Código QR generado correctamente (longitud base64: ${qrDataUrl.length} bytes)`);
console.log(` ✓ URL destino del QR: ${scanUrl}`);
console.log('=== TEST DE QR Y MANIFIESTO FINALIZADO EXITOSAMENTE ===');
process.exit(0);
}
testQrFlow().catch(err => {
console.error('ERROR EN TEST:', err);
process.exit(1);
});