tinfo-web-server / test /commonValidation.test.js
Faridaqurr
initial backend
e8c33fa
Raw
History Blame Contribute Delete
1.73 kB
const test = require('node:test');
const assert = require('node:assert/strict');
const {
sanitizeText,
parseList,
isValidDateInput,
isFutureDateInput,
isValidPersonName,
} = require('../validation/commonValidation');
test('sanitizeText trims and normalizes nullish values', () => {
assert.equal(sanitizeText(' hello '), 'hello');
assert.equal(sanitizeText(null), '');
assert.equal(sanitizeText(undefined), '');
});
test('parseList handles arrays and delimited strings', () => {
assert.deepEqual(parseList([' a ', 'b', ''], /,/), ['a', 'b']);
assert.deepEqual(parseList('one, two,,three', /,/), ['one', 'two', 'three']);
});
test('isValidDateInput accepts parseable dates and rejects impossible dates', () => {
assert.equal(isValidDateInput('2026-04-03'), true);
assert.equal(isValidDateInput('2026/04/03'), true);
assert.equal(isValidDateInput('2026-13-40'), false);
assert.equal(isValidDateInput('invalid'), false);
});
test('isFutureDateInput detects dates in the future', () => {
const toLocalDateInput = (date) => {
const local = new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000);
return local.toISOString().slice(0, 10);
};
const today = new Date();
const tomorrow = toLocalDateInput(new Date(today.getTime() + 24 * 60 * 60 * 1000));
const yesterday = toLocalDateInput(new Date(today.getTime() - 24 * 60 * 60 * 1000));
assert.equal(isFutureDateInput(tomorrow), true);
assert.equal(isFutureDateInput(yesterday), false);
});
test('isValidPersonName rejects numbers and accepts basic punctuation', () => {
assert.equal(isValidPersonName('Juan dela Cruz'), true);
assert.equal(isValidPersonName("O'Neil, Jr."), true);
assert.equal(isValidPersonName('John 123'), false);
});