Spaces:
Running
Running
| 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); | |
| }); | |