import { describe, it, expect } from 'vitest' import { readFileSync } from 'fs' import { resolve } from 'path' import { parseBpmnXml, extractActivityElements } from '@/domain/bpmn-parser' describe('Colaboración multi-pool', () => { const xml = readFileSync(resolve(__dirname, '../proceso_carga_facturas.bpmn'), 'utf-8') it('parsea sin error', () => { expect(() => parseBpmnXml(xml)).not.toThrow() }) it('extrae actividades de TODOS los pools, no solo el primero', () => { const graph = parseBpmnXml(xml) const acts = extractActivityElements(graph) const ids = acts.map((a) => a.bpmnElementId) // Pool 1 — IKData (OCR) expect(ids).toContain('Task_OCR') expect(ids).toContain('Task_GenerarPayload') // Pool 2 — Robot RPA (proceso principal) expect(ids).toContain('Task_LeerPayload') expect(ids).toContain('Task_AbrirSAP') expect(ids).toContain('Task_GuardarFactura') expect(ids).toContain('Task_DerivarBandeja') // Pool 3 — SAP (pool de soporte sin StartEvent propio) expect(ids).toContain('Task_RecibirFactura') // Pool 4 — Bandeja manual (pool de soporte sin StartEvent propio) expect(ids).toContain('Task_RevisionManual') expect(acts.length).toBeGreaterThanOrEqual(14) }) it('tiene StartEvents de los pools principales aunque otros pools no tengan', () => { const graph = parseBpmnXml(xml) expect(graph.startEventIds).toContain('StartEvent_IKData') expect(graph.startEventIds).toContain('StartEvent_Robot') }) })