feat: implementar jornadas y validar aliases
This commit is contained in:
39
packages/services/src/__tests__/jornada.usecase.test.ts
Normal file
39
packages/services/src/__tests__/jornada.usecase.test.ts
Normal 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();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user