Connect Meshkee backend, blog and shared account session

This commit is contained in:
Alireza Hassani
2026-09-05 19:41:56 +03:30
parent ee4b384238
commit de46b50e13
33 changed files with 803 additions and 11 deletions
+18
View File
@@ -0,0 +1,18 @@
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']);
});