import test from 'node:test'; import assert from 'node:assert/strict'; import { validateContact, normalizeCell } from '../lib/meshkee/contact.ts'; test('required fields are rejected before submission',()=>{ const result=validateContact({});assert.deepEqual(Object.keys(result.errors).sort(),['name','text','title']); }); test('Persian and local mobile numbers normalize to E.164',()=>{ assert.equal(normalizeCell('۰۹۱۲ ۵۵۳ ۷۶۳۰'),'+989125537630'); assert.equal(normalizeCell('0098 912 5537630'),'+989125537630'); }); test('valid form strips unknown fields and accepts optional empty contact fields',()=>{ const result=validateContact({title:' عنوان ',name:'نام',text:'پیام',isAdmin:true}); assert.deepEqual(result.errors,{});assert.equal(result.data.title,'عنوان');assert.equal('isAdmin' in result.data,false); }); test('invalid email, phone and oversized messages remain errors',()=>{ const result=validateContact({title:'a',name:'b',text:'x'.repeat(5001),email:'not-email',cellNumber:'123'}); assert.deepEqual(Object.keys(result.errors).sort(),['cellNumber','email','text']); });