const { test } = require('node:test'); const assert = require('node:assert/strict'); const { buildWorkflow } = require('./build-workflow'); test('workflow montado tem nome e nodes esperados', () => { const wf = buildWorkflow(); assert.equal(wf.name, '[DEV] Coordenador GLPI - Chamados Abertos v2 (Shadow)'); const names = wf.nodes.map((n) => n.name); assert.ok(names.includes('Code - Montar SQL Candidatos')); }); test('Code - Montar SQL Candidatos tem a logica de config e o SQL inlined (sem marcador de build)', () => { const wf = buildWorkflow(); const node = wf.nodes.find((n) => n.name === 'Code - Montar SQL Candidatos'); assert.ok(node.parameters.jsCode.includes('function parseConfig')); assert.ok(node.parameters.jsCode.includes('WITH ultima_interacao')); assert.ok(!node.parameters.jsCode.includes('__BUILD__')); assert.ok(!node.parameters.jsCode.includes('__SQL_CANDIDATOS_V2__')); }); test('nenhum node de Code sobra com marcador nao resolvido', () => { const wf = buildWorkflow(); for (const node of wf.nodes) { if (node.type === 'n8n-nodes-base.code') { assert.ok(!node.parameters.jsCode.includes('__BUILD__'), `node ${node.name} tem marcador nao resolvido`); } } });