92 lines
4.0 KiB
JavaScript
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);
|
|
});
|