Files
sgemed/tests/contact.test.mjs
T

19 lines
1.1 KiB
JavaScript

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