// 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')); });