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>
74 lines
2.3 KiB
JavaScript
74 lines
2.3 KiB
JavaScript
// tests/callReport.resolveTarget.test.js
|
|
|
|
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
|
|
import {
|
|
parseCallReportTarget,
|
|
parseStoreNumFromLocationName,
|
|
} from '../services/callReport/parseTarget.js';
|
|
import {
|
|
buildMatchKeysForNumber,
|
|
buildMatchKeysForPerson,
|
|
} from '../services/callTest/locationResolver.js';
|
|
|
|
test('parseCallReportTarget recognizes store numbers', () => {
|
|
assert.deepEqual(parseCallReportTarget('782'), { kind: 'store', storeNum: '782' });
|
|
assert.deepEqual(parseCallReportTarget('24'), { kind: 'store', storeNum: '24' });
|
|
});
|
|
|
|
test('parseCallReportTarget recognizes email addresses', () => {
|
|
assert.deepEqual(parseCallReportTarget('mcqueenj@ae.com'), {
|
|
kind: 'user',
|
|
email: 'mcqueenj@ae.com',
|
|
});
|
|
});
|
|
|
|
test('parseCallReportTarget recognizes phone numbers', () => {
|
|
assert.deepEqual(parseCallReportTarget('7247795574'), {
|
|
kind: 'number',
|
|
phoneNumber: '+17247795574',
|
|
});
|
|
assert.deepEqual(parseCallReportTarget('+17247795574'), {
|
|
kind: 'number',
|
|
phoneNumber: '+17247795574',
|
|
});
|
|
});
|
|
|
|
test('parseCallReportTarget rejects invalid tokens', () => {
|
|
assert.equal(parseCallReportTarget(''), null);
|
|
assert.equal(parseCallReportTarget('50782'), null);
|
|
assert.equal(parseCallReportTarget('not-a-target'), null);
|
|
});
|
|
|
|
test('parseStoreNumFromLocationName extracts store digits', () => {
|
|
assert.equal(parseStoreNumFromLocationName('Store 0782'), '782');
|
|
assert.equal(parseStoreNumFromLocationName('store 2477'), '2477');
|
|
assert.equal(parseStoreNumFromLocationName('HQ'), null);
|
|
});
|
|
|
|
test('buildMatchKeysForNumber includes phone and extension', () => {
|
|
const keys = buildMatchKeysForNumber({
|
|
phoneNumber: '+17247795574',
|
|
extension: '7841',
|
|
owner: { name: 'Jane Doe' },
|
|
});
|
|
assert.ok(keys.has('17247795574'));
|
|
assert.ok(keys.has('7841'));
|
|
assert.ok(keys.has('jane doe'));
|
|
});
|
|
|
|
test('buildMatchKeysForPerson includes email and owned numbers', () => {
|
|
const keys = buildMatchKeysForPerson(
|
|
{
|
|
displayName: 'Jane Doe',
|
|
emails: ['jane@ae.com'],
|
|
phoneNumbers: [{ value: '+15551234567' }],
|
|
},
|
|
[{ phoneNumber: '+15559876543', extension: '50782' }],
|
|
);
|
|
assert.ok(keys.has('jane@ae.com'));
|
|
assert.ok(keys.has('jane doe'));
|
|
assert.ok(keys.has('50782'));
|
|
assert.ok(keys.has('15551234567'));
|
|
});
|