diff --git a/src/libs/CardUtils.ts b/src/libs/CardUtils.ts index d71ad9c2629a..f7ac80a1d7f3 100644 --- a/src/libs/CardUtils.ts +++ b/src/libs/CardUtils.ts @@ -68,6 +68,22 @@ function getYearFromExpirationDateString(expirationDateString: string) { return cardYear.length === 2 ? `20${cardYear}` : cardYear; } +/** + * @returns string with a month in MM/YYYY format + */ +function formatCardExpiration(expirationDateString: string) { + // already matches MM/YYYY format + const dateFormat = /^\d{2}\/\d{4}$/; + if (dateFormat.test(expirationDateString)) { + return expirationDateString; + } + + const expirationMonth = getMonthFromExpirationDateString(expirationDateString); + const expirationYear = getYearFromExpirationDateString(expirationDateString); + + return `${expirationMonth}/${expirationYear}`; +} + /** * @param cardList - collection of assigned cards * @returns collection of assigned cards grouped by domain @@ -120,6 +136,7 @@ export { isExpensifyCard, isCorporateCard, getDomainCards, + formatCardExpiration, getMonthFromExpirationDateString, getYearFromExpirationDateString, maskCard, diff --git a/src/pages/settings/Wallet/ExpensifyCardPage.js b/src/pages/settings/Wallet/ExpensifyCardPage.js index 856c0613cec7..cacf35db22a6 100644 --- a/src/pages/settings/Wallet/ExpensifyCardPage.js +++ b/src/pages/settings/Wallet/ExpensifyCardPage.js @@ -226,7 +226,7 @@ function ExpensifyCardPage({ {details.pan ? ( { expect(cardUtils.getMonthFromExpirationDateString(shortDate)).toBe(expectedMonth); expect(cardUtils.getYearFromExpirationDateString(shortDate)).toBe(expectedYear); }); + + it('Test MM/YYYY format given MM/YY', () => { + expect(cardUtils.formatCardExpiration(shortDateSlashed)).toBe(longDateSlashed); + expect(cardUtils.formatCardExpiration(shortDateSlashed)).toBe(longDateSlashed); + }); + + it('Test MM/YYYY format given MMYY', () => { + expect(cardUtils.formatCardExpiration(shortDate)).toBe(longDateSlashed); + expect(cardUtils.formatCardExpiration(shortDate)).toBe(longDateSlashed); + }); });