Files
paperless-ngx/src-ui/setup-jest.ts
T

140 lines
4.7 KiB
TypeScript
Raw Normal View History

2024-12-13 00:27:30 -08:00
import '@angular/localize/init'
2022-05-02 01:02:28 -07:00
import { jest } from '@jest/globals'
2025-01-01 22:26:53 -08:00
import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'
2024-12-13 00:27:30 -08:00
import { TextDecoder, TextEncoder } from 'util'
2023-05-23 15:02:54 -07:00
if (process.env.NODE_ENV === 'test') {
2025-01-01 22:26:53 -08:00
setupZoneTestEnv()
2023-05-23 15:02:54 -07:00
}
global.TextEncoder = TextEncoder
global.TextDecoder = TextDecoder
import { registerLocaleData } from '@angular/common'
2023-08-29 07:04:19 -07:00
import localeAf from '@angular/common/locales/af'
2023-05-23 15:02:54 -07:00
import localeAr from '@angular/common/locales/ar'
import localeBe from '@angular/common/locales/be'
2023-11-01 06:49:52 -07:00
import localeBg from '@angular/common/locales/bg'
2023-05-23 15:02:54 -07:00
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'
2023-08-29 07:04:19 -07:00
import localeEl from '@angular/common/locales/el'
2023-05-23 15:02:54 -07:00
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'
2023-11-12 16:39:17 -08:00
import localeHu from '@angular/common/locales/hu'
2023-05-23 15:02:54 -07:00
import localeIt from '@angular/common/locales/it'
2024-02-03 11:37:21 -08:00
import localeJa from '@angular/common/locales/ja'
2024-08-28 20:10:23 -07:00
import localeKo from '@angular/common/locales/ko'
2023-05-23 15:02:54 -07:00
import localeLb from '@angular/common/locales/lb'
import localeNl from '@angular/common/locales/nl'
2023-08-29 07:04:19 -07:00
import localeNo from '@angular/common/locales/no'
2023-05-23 15:02:54 -07:00
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'
2023-06-30 20:01:17 -07:00
import localeSk from '@angular/common/locales/sk'
2023-05-23 15:02:54 -07:00
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'
2023-08-06 08:05:39 -07:00
import localeUk from '@angular/common/locales/uk'
2023-05-23 15:02:54 -07:00
import localeZh from '@angular/common/locales/zh'
import localeZhHant from '@angular/common/locales/zh-Hant'
2023-05-23 15:02:54 -07:00
2023-08-29 07:04:19 -07:00
registerLocaleData(localeAf)
2023-05-23 15:02:54 -07:00
registerLocaleData(localeAr)
registerLocaleData(localeBe)
2023-11-01 06:49:52 -07:00
registerLocaleData(localeBg)
2023-05-23 15:02:54 -07:00
registerLocaleData(localeCa)
registerLocaleData(localeCs)
registerLocaleData(localeDa)
registerLocaleData(localeDe)
2023-08-29 07:04:19 -07:00
registerLocaleData(localeEl)
2023-05-23 15:02:54 -07:00
registerLocaleData(localeEnGb)
registerLocaleData(localeEs)
registerLocaleData(localeFi)
registerLocaleData(localeFr)
2023-11-12 16:39:17 -08:00
registerLocaleData(localeHu)
2023-05-23 15:02:54 -07:00
registerLocaleData(localeIt)
2024-02-03 11:37:21 -08:00
registerLocaleData(localeJa)
2024-08-28 20:10:23 -07:00
registerLocaleData(localeKo)
2023-05-23 15:02:54 -07:00
registerLocaleData(localeLb)
registerLocaleData(localeNl)
2023-08-29 07:04:19 -07:00
registerLocaleData(localeNo)
2023-05-23 15:02:54 -07:00
registerLocaleData(localePl)
registerLocaleData(localePt, 'pt-BR')
registerLocaleData(localePt, 'pt-PT')
registerLocaleData(localeRo)
registerLocaleData(localeRu)
2023-06-30 20:01:17 -07:00
registerLocaleData(localeSk)
2023-05-23 15:02:54 -07:00
registerLocaleData(localeSl)
registerLocaleData(localeSr)
registerLocaleData(localeSv)
registerLocaleData(localeTr)
2023-08-06 08:05:39 -07:00
registerLocaleData(localeUk)
2023-05-23 15:02:54 -07:00
registerLocaleData(localeZh)
registerLocaleData(localeZhHant)
2022-03-22 14:33:00 +01:00
/* global mocks for jsdom */
const mock = () => {
2022-03-23 08:33:19 +01:00
let storage: { [key: string]: string } = {}
2022-03-22 14:33:00 +01:00
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 || ''
},
2022-03-22 14:33:00 +01:00
removeItem: (key: string) => delete storage[key],
clear: () => (storage = {}),
2022-03-23 08:33:19 +01:00
}
}
2022-03-22 14:33:00 +01:00
Object.defineProperty(window, 'open', { value: jest.fn() })
2022-03-23 08:33:19 +01:00
Object.defineProperty(window, 'localStorage', { value: mock() })
Object.defineProperty(window, 'sessionStorage', { value: mock() })
2022-03-22 14:33:00 +01:00
Object.defineProperty(window, 'getComputedStyle', {
value: () => ['-webkit-appearance'],
2022-03-23 08:33:19 +01:00
})
2023-08-23 23:50:54 -07:00
Object.defineProperty(navigator, 'clipboard', {
value: {
writeText: async () => {},
},
})
2023-09-14 13:32:43 -07:00
Object.defineProperty(navigator, 'canShare', { value: () => true })
if (!navigator.share) {
Object.defineProperty(navigator, 'share', { value: jest.fn() })
}
if (!URL.createObjectURL) {
Object.defineProperty(window.URL, 'createObjectURL', { value: jest.fn() })
}
if (!URL.revokeObjectURL) {
Object.defineProperty(window.URL, 'revokeObjectURL', { value: jest.fn() })
}
2023-05-23 15:02:54 -07:00
Object.defineProperty(window, 'ResizeObserver', { value: mock() })
2024-02-23 23:36:03 -08:00
Object.defineProperty(window, 'location', {
configurable: true,
value: { reload: jest.fn() },
})
2023-05-23 15:02:54 -07:00
2022-05-02 01:02:28 -07:00
HTMLCanvasElement.prototype.getContext = <
typeof HTMLCanvasElement.prototype.getContext
>jest.fn()
// pdfjs
jest.mock('pdfjs-dist', () => ({
getDocument: jest.fn(() => ({
promise: Promise.resolve({ numPages: 3 }),
})),
GlobalWorkerOptions: { workerSrc: '' },
VerbosityLevel: { ERRORS: 0 },
globalThis: {
pdfjsLib: {
GlobalWorkerOptions: {
workerSrc: '',
},
},
},
}))
jest.mock('pdfjs-dist/web/pdf_viewer', () => ({}))