import { describe, it, expect, beforeEach } from 'vitest'; import { JornadaService } from '../JornadaService'; import { db } from '@toldo/data'; describe('Caso de uso jornada', () => { const service = new JornadaService(); beforeEach(async () => { await db.jornadas.clear(); await db.ventas.clear(); await db.ventaLineas.clear(); await db.gastos.clear(); await db.cuadres.clear(); await db.productos.clear(); }); it('abrir jornada, registrar venta y gasto, cerrar con cuadre', async () => { await db.productos.add({ id: 'p1', productorId: 'pr1', nombrePresentacion: 'Café 500g', precioUnitario: 15000, activo: true } as any); const jid = await service.abrirJornada(['Ana', 'Luis'], 100000); expect(jid).toBeTruthy(); const ventaId = crypto.randomUUID(); await service.registrarVentaEnJornada(jid, { id: ventaId, fecha: new Date(), subtotal: 30000, total: 30000, createdAt: new Date() } as any, [ { id: crypto.randomUUID(), ventaId, productoId: 'p1', cantidad: 2, precioUnitario: 15000, subtotal: 30000, formaPago: 'EFECTIVO' } as any ]); await service.registrarGastoEnJornada(jid, { id: crypto.randomUUID(), fecha: new Date(), concepto: 'Bolsas', monto: 5000, formaPago: 'EFECTIVO', createdAt: new Date() } as any); const resumen = await service.getResumenJornada(jid); expect(resumen?.totalVentas).toBe(30000); expect(resumen?.totalGastos).toBe(5000); const cuadreId = await service.cerrarJornada(jid, 125000); expect(cuadreId).toBeTruthy(); const abierta = await service.getJornadaAbierta(); expect(abierta).toBeUndefined(); }); });