Connect Meshkee backend, blog and shared account session
This commit is contained in:
@@ -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']);
|
||||
});
|
||||
Reference in New Issue
Block a user