import { mmyyFutureDateValidation, } from './mmyy-future-date.validation'; const now = new Date(); const toDateFormat = (date: Date) => { const month = (date.getUTCMonth() + 1).toString(); const year = date.getUTCFullYear().toString().substring(2, 4); const monthString = month.length === 1 ? `0${month}` : month; return `${monthString}/${year}`; }; describe('mmyyFutureDateValidation', () => { const runMmyyFutureDateValidTest = ({ dateValue, expectedToBeValid, }: { dateValue: string, expectedToBeValid: boolean, }) => { test(`Expect ${dateValue} to be ${ expectedToBeValid ? 'valid' : 'invalid' }`, () => { const result = mmyyFutureDateValidation(dateValue); if (expectedToBeValid) { expect(result).toBeNull(); } else { expect(result.mmyyFutureDateValidation).toBe(true); } }); }; const invalidDateValues = [ toDateFormat(now), toDateFormat(new Date(now.getFullYear() - 1, now.getUTCMonth() - 1, 1)), '05/10', ]; invalidDateValues .forEach((dateValue) => runMmyyFutureDateValidTest({ dateValue, expectedToBeValid: false, })); const validDateValues = [ toDateFormat(new Date(now.getUTCFullYear(), now.getUTCMonth() + 2, 1)), toDateFormat(new Date(now.getUTCFullYear() + 1, now.getUTCMonth(), 1)), null, ]; validDateValues .forEach((dateValue) => runMmyyFutureDateValidTest({ dateValue, expectedToBeValid: true, })); });