box-ui-elements-mlh
Version:
99 lines (92 loc) • 4.06 kB
text/typescript
import { isValidTime, parseTimeFromString } from '../TimeInputUtils';
const VALID_TIME_INPUTS = [
['3:00 PM', { hours: 15, minutes: 0 }],
['3:00 P M', { hours: 15, minutes: 0 }],
['3:00PM', { hours: 15, minutes: 0 }],
['3:00P M', { hours: 15, minutes: 0 }],
['300 PM', { hours: 15, minutes: 0 }],
['300 P M', { hours: 15, minutes: 0 }],
['300PM', { hours: 15, minutes: 0 }],
['300P M', { hours: 15, minutes: 0 }],
['3 PM', { hours: 15, minutes: 0 }],
['3 P M', { hours: 15, minutes: 0 }],
['3PM', { hours: 15, minutes: 0 }],
['3P M', { hours: 15, minutes: 0 }],
['3:00 P.M.', { hours: 15, minutes: 0 }],
['3:00 P. M.', { hours: 15, minutes: 0 }],
['3:00P.M.', { hours: 15, minutes: 0 }],
['3:00P. M.', { hours: 15, minutes: 0 }],
['300 P.M.', { hours: 15, minutes: 0 }],
['300 P. M.', { hours: 15, minutes: 0 }],
['300P.M.', { hours: 15, minutes: 0 }],
['300P. M.', { hours: 15, minutes: 0 }],
['3 P.M.', { hours: 15, minutes: 0 }],
['3 P. M.', { hours: 15, minutes: 0 }],
['3P.M.', { hours: 15, minutes: 0 }],
['3P. M.', { hours: 15, minutes: 0 }],
['3:00 p.m.', { hours: 15, minutes: 0 }],
['3:00 p. m.', { hours: 15, minutes: 0 }],
['3:00p.m.', { hours: 15, minutes: 0 }],
['3:00p. m.', { hours: 15, minutes: 0 }],
['300 p.m.', { hours: 15, minutes: 0 }],
['300 p. m.', { hours: 15, minutes: 0 }],
['300p.m.', { hours: 15, minutes: 0 }],
['300p. m.', { hours: 15, minutes: 0 }],
['3 p.m.', { hours: 15, minutes: 0 }],
['3 p. m.', { hours: 15, minutes: 0 }],
['3p.m.', { hours: 15, minutes: 0 }],
['3p. m.', { hours: 15, minutes: 0 }],
['3:00 pm', { hours: 15, minutes: 0 }],
['3:00 p m', { hours: 15, minutes: 0 }],
['3:00pm', { hours: 15, minutes: 0 }],
['3:00p m', { hours: 15, minutes: 0 }],
['300 pm', { hours: 15, minutes: 0 }],
['300 p m', { hours: 15, minutes: 0 }],
['300pm', { hours: 15, minutes: 0 }],
['300p m', { hours: 15, minutes: 0 }],
['3 pm', { hours: 15, minutes: 0 }],
['3 p m', { hours: 15, minutes: 0 }],
['3pm', { hours: 15, minutes: 0 }],
['3p m', { hours: 15, minutes: 0 }],
['3.00', { hours: 3, minutes: 0 }],
['3h00', { hours: 3, minutes: 0 }],
['3 h 00', { hours: 3, minutes: 0 }],
['15:00', { hours: 15, minutes: 0 }],
['1500', { hours: 15, minutes: 0 }],
['15.00', { hours: 15, minutes: 0 }],
['15h00', { hours: 15, minutes: 0 }],
['15 h 00', { hours: 15, minutes: 0 }],
['12:00', { hours: 12, minutes: 0 }],
['3', { hours: 3, minutes: 0 }],
['3am', { hours: 3, minutes: 0 }],
['3pm', { hours: 15, minutes: 0 }],
['11', { hours: 11, minutes: 0 }],
['11am', { hours: 11, minutes: 0 }],
['01', { hours: 1, minutes: 0 }],
['01am', { hours: 1, minutes: 0 }],
['01pm', { hours: 13, minutes: 0 }],
['3:00', { hours: 3, minutes: 0 }],
['3:00am', { hours: 3, minutes: 0 }],
['3:00pm', { hours: 15, minutes: 0 }],
['11pm', { hours: 23, minutes: 0 }],
['1125pm', { hours: 23, minutes: 25 }],
['11:00pm', { hours: 23, minutes: 0 }],
['12am', { hours: 0, minutes: 0 }],
['12pm', { hours: 12, minutes: 0 }],
];
const INVALID_TIME_INPUTS = ['abcde', '', undefined];
const OUT_OF_RANGE_INPUT = ['154309', '4449292 p.m.', '4444', '3:66 p.m.', '55:55'];
describe('src/components/time-input/TimeInputUtils', () => {
test.each(VALID_TIME_INPUTS)('should return true for valid input %s', input => {
expect(isValidTime(input as string)).toBe(true);
});
test.each(INVALID_TIME_INPUTS)('should return false for invalid input %s', input => {
expect(isValidTime(input)).toBe(false);
});
test.each(VALID_TIME_INPUTS)('should correctly parse %s', (input, parsedTime) => {
expect(parseTimeFromString(input as string)).toEqual(parsedTime);
});
test.each(OUT_OF_RANGE_INPUT)('should throw a SyntaxError for input %s', input => {
expect(() => parseTimeFromString(input)).toThrow(SyntaxError);
});
});