Files
help_desk/scripts/test_foto_flow.js
T

92 lines
4.0 KiB
JavaScript

const path = require('path');
const Herramienta = require('../models/Herramienta');
const HerramientaSet = require('../models/HerramientaSet');
const HerramientaAsignacion = require('../models/HerramientaAsignacion');
const db = require('../config/db');
async function testFotoFlow() {
console.log('=== TEST DE FLUJO DE HERRAMIENTAS Y FOTOGRAFÍAS ===');
const companyId = 1;
// 1. Crear herramienta con foto simulada
console.log('1. Creando herramienta de prueba con foto_url...');
const testToolId = await Herramienta.create({
company_id: companyId,
nombre: 'Reflectómetro de Prueba OTDR',
codigo: 'TEST-FOTO-01',
numero_serie: 'SN-TEST-8899',
categoria: 'medicion',
marca: 'Anritsu',
modelo: 'MT9090A',
estado: 'operativo',
ubicacion_bodega: 'Bodega Central - Estante A1',
notas: 'Herramienta para verificar soporte fotográfico',
foto_url: '/uploads/herramientas/test_otdr.jpg'
});
console.log(' ✓ Herramienta creada con ID:', testToolId);
const fetchedTool = await Herramienta.findById(testToolId, companyId);
console.log(' ✓ Herramienta recuperada:', fetchedTool.nombre, '| foto_url:', fetchedTool.foto_url);
// 2. Crear Set de Herramientas con foto simulada
console.log('2. Creando Set con foto_url...');
const testSetId = await HerramientaSet.create({
company_id: companyId,
nombre: 'Kit de Certificación Fotográfico',
codigo: 'SET-FOTO-01',
descripcion: 'Kit con evidencia fotográfica del maletín completo',
categoria: 'fibra_optica',
foto_url: '/uploads/herramientas/test_kit.jpg'
}, [testToolId]);
console.log(' ✓ Set creado con ID:', testSetId);
const fetchedSet = await HerramientaSet.findById(testSetId, companyId);
console.log(' ✓ Set recuperado:', fetchedSet.nombre, '| foto_url:', fetchedSet.foto_url, '| items:', fetchedSet.herramientas.length);
// 3. Crear Asignación a técnico con foto_entrega_url
console.log('3. Creando asignación de custodia con foto_entrega_url...');
const [users] = await db.query("SELECT id FROM users WHERE company_id = ? AND rol IN ('agent', 'admin') LIMIT 1", [companyId]);
const tecnicoId = users[0].id;
const asignacionId = await HerramientaAsignacion.create({
company_id: companyId,
tecnico_id: tecnicoId,
set_id: testSetId,
tipo_asignacion: 'dotacion_fija',
observaciones_entrega: 'Entregado maletín precintado y verificado fotográficamente',
foto_entrega_url: '/uploads/herramientas/test_entrega.jpg',
asignado_por: tecnicoId
});
console.log(' ✓ Asignación creada con ID:', asignacionId);
const fetchedAsig = await HerramientaAsignacion.findById(asignacionId, companyId);
console.log(' ✓ Asignación recuperada:', fetchedAsig.set_nombre, '| foto_entrega_url:', fetchedAsig.foto_entrega_url);
// 4. Registrar Devolución con foto_devolucion_url
console.log('4. Registrando devolución con foto_devolucion_url...');
await HerramientaAsignacion.devolver(asignacionId, companyId, {
observaciones_devolucion: 'Reingresado a bodega con evidencia fotográfica',
estado: 'devuelto',
foto_devolucion_url: '/uploads/herramientas/test_devolucion.jpg'
});
const returnedAsig = await HerramientaAsignacion.findById(asignacionId, companyId);
console.log(' ✓ Devolución verificada:', returnedAsig.estado, '| foto_devolucion_url:', returnedAsig.foto_devolucion_url);
// 5. Limpieza de datos de prueba
console.log('5. Limpiando datos de prueba...');
await HerramientaAsignacion.delete(asignacionId, companyId);
await HerramientaSet.delete(testSetId, companyId);
await Herramienta.delete(testToolId, companyId);
console.log(' ✓ Datos de prueba eliminados correctamente.');
console.log('=== TODOS LOS TESTS DE PERSISTENCIA Y MODELOS PASARON EXITOSAMENTE ===');
process.exit(0);
}
testFotoFlow().catch(err => {
console.error('ERROR EN TEST:', err);
process.exit(1);
});