import { creditCardNumberValidation, } from './credit-card-number.validation'; describe('creditCardNumberValidation', () => { const runCreditCardNumberValidTest = ({ creditCardNumber, expectedToBeValid, }: { creditCardNumber: string, expectedToBeValid: boolean, }) => { test(`Expect ${creditCardNumber} to be ${ expectedToBeValid ? 'valid' : 'invalid' }`, () => { const result = creditCardNumberValidation(creditCardNumber); if (expectedToBeValid) { expect(result).toBeNull(); } else { expect(result.creditCardNumberValidation).toBe(true); } }); }; const invalidCardNumbers = [ 'abc', '3782822463100054', '37828224631000a', '555555555555444', ]; invalidCardNumbers .forEach((creditCardNumber) => runCreditCardNumberValidTest({ creditCardNumber, expectedToBeValid: false, })); const validCardNumbers = [ '378282246310005', '371449635398431', '378734493671000', '5610591081018250', '30569309025904', '38520000023237', '6011111111111117', '6011000990139424', '3530111333300000', '3566002020360505', '5555555555554444', '5105105105105100', '4111111111111111', '4012888888881881', '4222222222222', '5555-5555-5555-4444', '5555 5555 5555 4444', null, ]; validCardNumbers .forEach((creditCardNumber) => runCreditCardNumberValidTest({ creditCardNumber, expectedToBeValid: true, })); });