From 5e21abeed79720937613c863050aef657dece884 Mon Sep 17 00:00:00 2001 From: Jack Westbrook Date: Thu, 8 Aug 2024 12:26:28 +0200 Subject: [PATCH] test(internationalisation): move files around so we can mock any use of import.meta.glob --- .../internationalization/constants.test.ts | 4 ++++ .../app/core/internationalization/constants.ts | 18 +++--------------- .../core/internationalization/extensions.ts | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 public/app/core/internationalization/extensions.ts diff --git a/public/app/core/internationalization/constants.test.ts b/public/app/core/internationalization/constants.test.ts index 68defb081b3..8352994e221 100644 --- a/public/app/core/internationalization/constants.test.ts +++ b/public/app/core/internationalization/constants.test.ts @@ -13,6 +13,10 @@ import { VALID_LANGUAGES, } from './constants'; +jest.mock('./extensions.ts', () => { + return {}; +}); + describe('internationalization constants', () => { it('should have set the constants correctly', () => { expect(ENGLISH_US).toBe('en-US'); diff --git a/public/app/core/internationalization/constants.ts b/public/app/core/internationalization/constants.ts index ed91240133f..58c9f76e877 100644 --- a/public/app/core/internationalization/constants.ts +++ b/public/app/core/internationalization/constants.ts @@ -1,6 +1,8 @@ -import { ResourceKey } from 'i18next'; import { uniq } from 'lodash'; +// we mock this in jest as import.meta.glob breaks things, so we don't even attempt to load enterprise translations... +import { localeExtensionImports, type LocaleFileLoader } from './extensions'; + export const ENGLISH_US = 'en-US'; export const FRENCH_FRANCE = 'fr-FR'; export const SPANISH_SPAIN = 'es-ES'; @@ -11,8 +13,6 @@ export const PSEUDO_LOCALE = 'pseudo'; export const DEFAULT_LANGUAGE = ENGLISH_US; -export type LocaleFileLoader = () => Promise; - export interface LanguageDefinition { /** IETF language tag for the language e.g. en-US */ code: string; @@ -87,19 +87,7 @@ if (process.env.NODE_ENV === 'development') { // Optionally load enterprise locale extensions, if they are present. // It is important that this happens before NAMESPACES is defined so it has the correct value // -// require.context doesn't work in jest, so we don't even attempt to load enterprise translations... if (process.env.NODE_ENV !== 'test') { - type LocaleExtensionExports = { - LOCALE_EXTENSIONS: Record; - ENTERPRISE_I18N_NAMESPACE: 'string'; - }; - - const localeExtensionImports: Record = import.meta.glob( - '../../app/extensions/locales/localeExtensions.ts', - { - eager: true, - } - ); const localeExtensionExports = Object.values(localeExtensionImports); if (localeExtensionExports.length > 0) { diff --git a/public/app/core/internationalization/extensions.ts b/public/app/core/internationalization/extensions.ts new file mode 100644 index 00000000000..644d516366d --- /dev/null +++ b/public/app/core/internationalization/extensions.ts @@ -0,0 +1,14 @@ +import { ResourceKey } from 'i18next'; +export type LocaleFileLoader = () => Promise; + +type LocaleExtensionExports = { + LOCALE_EXTENSIONS: Record; + ENTERPRISE_I18N_NAMESPACE: 'string'; +}; + +export const localeExtensionImports: Record = import.meta.glob( + '../../app/extensions/locales/localeExtensions.ts', + { + eager: true, + } +);