import '@angular/localize/init' import { jest } from '@jest/globals' import { TextDecoder, TextEncoder } from 'util' if (process.env.NODE_ENV === 'test') { require('jest-preset-angular/setup-jest') } global.TextEncoder = TextEncoder global.TextDecoder = TextDecoder import { registerLocaleData } from '@angular/common' import localeAf from '@angular/common/locales/af' import localeAr from '@angular/common/locales/ar' import localeBe from '@angular/common/locales/be' import localeBg from '@angular/common/locales/bg' import localeCa from '@angular/common/locales/ca' import localeCs from '@angular/common/locales/cs' import localeDa from '@angular/common/locales/da' import localeDe from '@angular/common/locales/de' import localeEl from '@angular/common/locales/el' import localeEnGb from '@angular/common/locales/en-GB' import localeEs from '@angular/common/locales/es' import localeFi from '@angular/common/locales/fi' import localeFr from '@angular/common/locales/fr' import localeHu from '@angular/common/locales/hu' import localeIt from '@angular/common/locales/it' import localeJa from '@angular/common/locales/ja' import localeKo from '@angular/common/locales/ko' import localeLb from '@angular/common/locales/lb' import localeNl from '@angular/common/locales/nl' import localeNo from '@angular/common/locales/no' import localePl from '@angular/common/locales/pl' import localePt from '@angular/common/locales/pt' import localeRo from '@angular/common/locales/ro' import localeRu from '@angular/common/locales/ru' import localeSk from '@angular/common/locales/sk' import localeSl from '@angular/common/locales/sl' import localeSr from '@angular/common/locales/sr' import localeSv from '@angular/common/locales/sv' import localeTr from '@angular/common/locales/tr' import localeUk from '@angular/common/locales/uk' import localeZh from '@angular/common/locales/zh' registerLocaleData(localeAf) registerLocaleData(localeAr) registerLocaleData(localeBe) registerLocaleData(localeBg) registerLocaleData(localeCa) registerLocaleData(localeCs) registerLocaleData(localeDa) registerLocaleData(localeDe) registerLocaleData(localeEl) registerLocaleData(localeEnGb) registerLocaleData(localeEs) registerLocaleData(localeFi) registerLocaleData(localeFr) registerLocaleData(localeHu) registerLocaleData(localeIt) registerLocaleData(localeJa) registerLocaleData(localeKo) registerLocaleData(localeLb) registerLocaleData(localeNl) registerLocaleData(localeNo) registerLocaleData(localePl) registerLocaleData(localePt, 'pt-BR') registerLocaleData(localePt, 'pt-PT') registerLocaleData(localeRo) registerLocaleData(localeRu) registerLocaleData(localeSk) registerLocaleData(localeSl) registerLocaleData(localeSr) registerLocaleData(localeSv) registerLocaleData(localeTr) registerLocaleData(localeUk) registerLocaleData(localeZh) /* global mocks for jsdom */ const mock = () => { let storage: { [key: string]: string } = {} return { getItem: (key: string) => (key in storage ? storage[key] : null), setItem: (key: string, value: string) => { if (value.length > 1000000) throw new Error('localStorage overflow') storage[key] = value || '' }, removeItem: (key: string) => delete storage[key], clear: () => (storage = {}), } } Object.defineProperty(window, 'open', { value: jest.fn() }) Object.defineProperty(window, 'localStorage', { value: mock() }) Object.defineProperty(window, 'sessionStorage', { value: mock() }) Object.defineProperty(window, 'getComputedStyle', { value: () => ['-webkit-appearance'], }) Object.defineProperty(navigator, 'clipboard', { value: { writeText: async () => {}, }, }) Object.defineProperty(navigator, 'canShare', { value: () => true }) Object.defineProperty(window, 'ResizeObserver', { value: mock() }) Object.defineProperty(window, 'location', { configurable: true, value: { reload: jest.fn() }, }) HTMLCanvasElement.prototype.getContext = < typeof HTMLCanvasElement.prototype.getContext >jest.fn()