'use strict'; const { describe, it } = require('node:test'); const assert = require('node:assert/strict'); const { normalizePersonName, namesMatch, normalizePhone, mapAttendanceStatus, projectSessionDates } = require('./importHelpers'); describe('importHelpers', () => { it('normalizes honorifics so spreadsheet names match database users', () => { assert.equal(normalizePersonName('مریم خ پناهیان'), 'مریم پناهیان'); assert.equal(normalizePersonName('سرکار فاطمه'), 'فاطمه'); assert.equal(normalizePersonName('سرکار خانم جاذبی'), 'جاذبی'); assert.ok(namesMatch('آقای رضایی', 'آقای رضایی')); assert.equal(normalizePhone(9168942141), '09168942141'); assert.equal(normalizePhone('93568933888'), '09356893388'); assert.equal(normalizePhone('09161117529'), '09161117529'); }); it('maps spreadsheet attendance marks', () => { assert.equal(mapAttendanceStatus('*'), 'present'); assert.equal(mapAttendanceStatus('غ'), 'absent'); assert.equal(mapAttendanceStatus(''), null); }); it('projects remaining Teksa sessions from Sunday/Tuesday pattern', () => { const firstNine = [ '2026-07-14', '2026-07-19', '2026-07-21', '2026-07-26', '2026-07-28', '2026-08-02', '2026-08-04', '2026-08-09', '2026-08-11' ]; const all = projectSessionDates(firstNine, 16); assert.equal(all.length, 16); assert.deepEqual(all.slice(0, 9), firstNine); assert.deepEqual(all.slice(9), [ '2026-08-16', '2026-08-18', '2026-08-23', '2026-08-25', '2026-08-30', '2026-09-01', '2026-09-06' ]); }); });