collabSupport/tests/cdrFeedQueue.test.js
jmcqueen a25fc08fe2 Rename /voicereport to /callreport with scoped user and phone targets.
Add store/email/phone filtering, richer call-line formatting, CDR feed pagination and queueing, and split Jira poller enrichment into testable modules.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 10:10:03 -04:00

46 lines
1.3 KiB
JavaScript

// tests/cdrFeedQueue.test.js
import test from 'node:test';
import assert from 'node:assert/strict';
import {
enqueueCdrFeedFetch,
_resetCdrFeedQueueForTests,
_setCdrFeedCooldownForTests,
} from '../services/cdrFeedQueue.js';
test.afterEach(() => {
_resetCdrFeedQueueForTests();
});
test('enqueueCdrFeedFetch runs immediately when idle', async () => {
let ran = false;
await enqueueCdrFeedFetch(async () => { ran = true; return 1; });
assert.equal(ran, true);
});
test('enqueueCdrFeedFetch queues second call and invokes onQueued', async () => {
_setCdrFeedCooldownForTests(150);
let releaseFirst;
const firstGate = new Promise((resolve) => { releaseFirst = resolve; });
const first = enqueueCdrFeedFetch(async () => {
await firstGate;
return 'first';
});
let queuedInfo = null;
const second = enqueueCdrFeedFetch(async () => 'second', {
onQueued: (info) => { queuedInfo = info; },
});
await new Promise((r) => setTimeout(r, 20));
assert.ok(queuedInfo, 'onQueued should fire for second caller');
assert.ok(queuedInfo.waitMs >= 100, `expected meaningful wait, got ${queuedInfo.waitMs}`);
assert.equal(queuedInfo.position, 2);
releaseFirst();
assert.equal(await first, 'first');
assert.equal(await second, 'second');
});