[AAE-39261] Fix Portuguese date format to display dd/mm/yyyy (#11303)

- Added support for 'pt' locale code in DateFnsUtils.getLocaleFromString()
- Both 'pt' and 'pt-BR' now correctly map to ptBR locale (dd/mm/yyyy format)
- Added comprehensive test coverage for all locale mappings using data-driven tests
- Fixed naming conflict by aliasing Italian locale import

Co-authored-by: Fabian Kindgen <39992669+fkindgen@users.noreply.github.com>
This commit is contained in:
Michaela
2025-10-27 09:39:58 +01:00
committed by GitHub
co-authored by Fabian Kindgen
parent 42a1ddf540
commit 2d68cf9916
2 changed files with 42 additions and 0 deletions
@@ -16,9 +16,50 @@
*/
import { addMinutes, isValid } from 'date-fns';
import { ar, cs, da, de, enUS, es, fi, fr, it as italian, ja, nb, nl, pl, ptBR, ru, sv, zhCN } from 'date-fns/locale';
import { DateFnsUtils } from './date-fns-utils';
describe('DateFnsUtils', () => {
describe('getLocaleFromString', () => {
const localeTestCases = [
{ localeCode: 'ar', expectedLocale: ar, description: 'Arabic' },
{ localeCode: 'cs', expectedLocale: cs, description: 'Czech' },
{ localeCode: 'da', expectedLocale: da, description: 'Danish' },
{ localeCode: 'de', expectedLocale: de, description: 'German' },
{ localeCode: 'en', expectedLocale: enUS, description: 'English (US)' },
{ localeCode: 'es', expectedLocale: es, description: 'Spanish' },
{ localeCode: 'fi', expectedLocale: fi, description: 'Finnish' },
{ localeCode: 'fr', expectedLocale: fr, description: 'French' },
{ localeCode: 'it', expectedLocale: italian, description: 'Italian' },
{ localeCode: 'ja', expectedLocale: ja, description: 'Japanese' },
{ localeCode: 'nb', expectedLocale: nb, description: 'Norwegian Bokmål' },
{ localeCode: 'nl', expectedLocale: nl, description: 'Dutch' },
{ localeCode: 'pl', expectedLocale: pl, description: 'Polish' },
{ localeCode: 'pt', expectedLocale: ptBR, description: 'Portuguese' },
{ localeCode: 'pt-BR', expectedLocale: ptBR, description: 'Portuguese (Brazilian)' },
{ localeCode: 'ru', expectedLocale: ru, description: 'Russian' },
{ localeCode: 'sv', expectedLocale: sv, description: 'Swedish' },
{ localeCode: 'zh-CN', expectedLocale: zhCN, description: 'Chinese (Simplified)' }
];
localeTestCases.forEach(({ localeCode, expectedLocale, description }) => {
it(`should return ${description} locale for '${localeCode}' locale code`, () => {
const locale = DateFnsUtils.getLocaleFromString(localeCode);
expect(locale).toBe(expectedLocale);
});
});
it('should return enUS locale for unknown locale code', () => {
const locale = DateFnsUtils.getLocaleFromString('unknown');
expect(locale).toBe(enUS);
});
it('should return enUS locale for empty string', () => {
const locale = DateFnsUtils.getLocaleFromString('');
expect(locale).toBe(enUS);
});
});
describe('convertMomentToDateFnsFormat', () => {
it('should convert moment date format', () => {
const dateFnsFormat = DateFnsUtils.convertMomentToDateFnsFormat('YYYY-MM-DD');
@@ -69,6 +69,7 @@ export class DateFnsUtils {
case 'pl':
dateFnsLocale = pl;
break;
case 'pt':
case 'pt-BR':
dateFnsLocale = ptBR;
break;