Files
quasar/backend/dist/tests/jobs/importRunner.spec.js
Benito Rodríguez a07096d7c7
Some checks failed
CI / lint (push) Failing after 1m5s
CI / test-backend (push) Has been skipped
CI / test-frontend (push) Has been skipped
CI / test-e2e (push) Has been skipped
feat: add UI components for alert dialog, badge, checkbox, dialog, label, select, sheet, table, textarea
- Implemented AlertDialog component with overlay, content, header, footer, title, description, action, and cancel functionalities.
- Created Badge component with variant support for different styles.
- Developed Checkbox component with custom styling and indicator.
- Added Dialog component with trigger, close, overlay, content, header, footer, title, and description.
- Introduced Label component for form elements.
- Built Select component with trigger, content, group, item, label, separator, and scroll buttons.
- Created Sheet component with trigger, close, overlay, content, header, footer, title, and description.
- Implemented Table component with header, body, footer, row, head, cell, and caption.
- Added Textarea component with custom styling.
- Established API service for game management with CRUD operations and metadata search functionalities.
- Updated dependencies in package lock files.
2026-03-18 19:21:36 +01:00

91 lines
4.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const importRunner_1 = require("../../src/jobs/importRunner");
(0, vitest_1.describe)('jobs/importRunner', () => {
(0, vitest_1.it)('enqueue rechaza después de stop', async () => {
const runner = new importRunner_1.ImportRunner(1);
runner.start();
runner.stop();
await (0, vitest_1.expect)(runner.enqueue(() => 'x')).rejects.toThrow();
});
(0, vitest_1.it)('rechaza tareas en cola tras stop', async () => {
const r = new importRunner_1.ImportRunner(1);
// Primera tarea comienza inmediatamente
const t1 = r.enqueue(async () => {
await new Promise((res) => setTimeout(res, 50));
return 'ok1';
});
// Segunda tarea quedará en cola
const t2 = r.enqueue(async () => 'ok2');
// Parar el runner inmediatamente
r.stop();
await (0, vitest_1.expect)(t1).resolves.toBe('ok1');
await (0, vitest_1.expect)(t2).rejects.toThrow(/ImportRunner stopped/);
const s = r.getStatus();
(0, vitest_1.expect)(s.completed).toBeGreaterThanOrEqual(1);
});
(0, vitest_1.it)('completed incrementa en rechazo', async () => {
const runner = new importRunner_1.ImportRunner(1);
runner.start();
const p = runner.enqueue(() => Promise.reject(new Error('boom')));
await (0, vitest_1.expect)(p).rejects.toThrow('boom');
const status = runner.getStatus();
(0, vitest_1.expect)(status.completed).toBeGreaterThanOrEqual(1);
runner.stop();
});
(0, vitest_1.it)('enqueue resuelve con el resultado de la tarea', async () => {
const runner = new importRunner_1.ImportRunner(2);
runner.start();
const result = await runner.enqueue(async () => 'ok');
(0, vitest_1.expect)(result).toBe('ok');
const status = runner.getStatus();
(0, vitest_1.expect)(status.completed).toBe(1);
(0, vitest_1.expect)(status.running).toBe(0);
(0, vitest_1.expect)(status.queued).toBe(0);
(0, vitest_1.expect)(status.concurrency).toBe(2);
runner.stop();
});
(0, vitest_1.it)('respeta la concurrencia configurada', async () => {
const concurrency = 2;
const runner = new importRunner_1.ImportRunner(concurrency);
runner.start();
let active = 0;
const observed = [];
const makeTask = (delay) => async () => {
active++;
observed.push(active);
await new Promise((r) => setTimeout(r, delay));
active--;
return 'done';
};
const promises = [];
for (let i = 0; i < 5; i++) {
promises.push(runner.enqueue(makeTask(80)));
}
await Promise.all(promises);
(0, vitest_1.expect)(Math.max(...observed)).toBeLessThanOrEqual(concurrency);
runner.stop();
});
(0, vitest_1.it)('getStatus reporta queued, running, completed y concurrency', async () => {
const concurrency = 2;
const runner = new importRunner_1.ImportRunner(concurrency);
runner.start();
const p1 = runner.enqueue(() => new Promise((r) => setTimeout(() => r('a'), 60)));
const p2 = runner.enqueue(() => new Promise((r) => setTimeout(() => r('b'), 60)));
const p3 = runner.enqueue(() => new Promise((r) => setTimeout(() => r('c'), 60)));
// allow the runner to start tasks
await new Promise((r) => setImmediate(r));
const statusNow = runner.getStatus();
(0, vitest_1.expect)(statusNow.concurrency).toBe(concurrency);
(0, vitest_1.expect)(statusNow.running).toBeLessThanOrEqual(concurrency);
(0, vitest_1.expect)(statusNow.queued).toBeGreaterThanOrEqual(0);
await Promise.all([p1, p2, p3]);
const statusAfter = runner.getStatus();
(0, vitest_1.expect)(statusAfter.queued).toBe(0);
(0, vitest_1.expect)(statusAfter.running).toBe(0);
(0, vitest_1.expect)(statusAfter.completed).toBe(3);
runner.stop();
});
});