chore: import maquina-comercial-pessoal history via subtree
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> git-subtree-dir: maquina-comercial-pessoal git-subtree-mainline:f5af038e19git-subtree-split:a9ef4d776d
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs/promises';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const root = path.dirname(path.dirname(fileURLToPath(import.meta.url)));
|
||||
|
||||
test('servidor inicia encerramentos em paralelo e limita esperas antes de fechar banco', async () => {
|
||||
const source = await fs.readFile(path.join(root, 'scripts', 'servidor.mjs'), 'utf8');
|
||||
assert.match(source, /recoverPendingOutreach\(db\)/);
|
||||
assert.match(source, /pauseCampaignsAfterRestart\(db\)/);
|
||||
assert.match(source, /recoverReservedCampaignQueue\(db\)/);
|
||||
assert.match(source, /onMessageStatus:\s*\(event\)\s*=>\s*updateOutreachMessageStatus\(db, event\)/);
|
||||
assert.ok(source.indexOf('recoverPendingOutreach(db)') < source.indexOf('const stopScheduler = startOutreachScheduler'));
|
||||
assert.ok(source.indexOf('pauseCampaignsAfterRestart(db)') < source.indexOf('const stopScheduler = startOutreachScheduler'));
|
||||
assert.ok(source.indexOf('recoverReservedCampaignQueue(db)') < source.indexOf('const stopScheduler = startOutreachScheduler'));
|
||||
assert.match(source, /setTimeout\(\(\) => process\.exit\(1\), 30_000\)/);
|
||||
const shutdown = source.slice(source.indexOf('async function shutdown()'));
|
||||
const schedulerStart = shutdown.indexOf('stopScheduler()');
|
||||
const jobsStart = shutdown.indexOf('jobs.close()');
|
||||
const whatsappStart = shutdown.indexOf('whatsapp.close()');
|
||||
const sharedWait = shutdown.indexOf('Promise.allSettled(shutdownTasks)');
|
||||
assert.ok(schedulerStart >= 0 && schedulerStart < sharedWait);
|
||||
assert.ok(jobsStart >= 0 && jobsStart < sharedWait);
|
||||
assert.ok(whatsappStart >= 0 && whatsappStart < sharedWait);
|
||||
assert.match(shutdown, /Promise\.race\([\s\S]*Promise\.allSettled\(shutdownTasks\)[\s\S]*20_000/);
|
||||
assert.match(shutdown, /encerramento dos recursos excedeu o prazo/);
|
||||
assert.ok(sharedWait < shutdown.indexOf('recoverOrphans(db, log)'));
|
||||
assert.ok(shutdown.indexOf('recoverOrphans(db, log)') < shutdown.indexOf('server.close(resolve)'));
|
||||
assert.ok(shutdown.indexOf('server.close(resolve)') < shutdown.indexOf('db.close()'));
|
||||
assert.match(shutdown, /encerramento HTTP excedeu o prazo/);
|
||||
});
|
||||
|
||||
test('UI distingue resultado desconhecido de falha', async () => {
|
||||
const source = await fs.readFile(path.join(root, 'public', 'js', 'app.js'), 'utf8');
|
||||
assert.match(source, /desconhecido[^\n]+(?:Resultado desconhecido|Confirmação pendente)/);
|
||||
assert.match(source, /aceito[^\n]+Aguardando confirmação/);
|
||||
assert.match(source, /entregue[^\n]+Entregue/);
|
||||
assert.match(source, /refresh-qr/);
|
||||
assert.match(source, /persistencia_incerta[\s\S]+?aviso/);
|
||||
});
|
||||
Reference in New Issue
Block a user