feat: implementar jornadas y validar aliases

This commit is contained in:
mono
2026-10-25 17:20:48 -05:00
parent 89390b5bed
commit 4ffce3e3cd
27 changed files with 537 additions and 29 deletions

View File

@@ -0,0 +1,39 @@
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);
expect(cuadreId).toBeTruthy();
const abierta = await service.getJornadaAbierta();
expect(abierta).toBeUndefined();
});
});