mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-03-31 13:35:08 -05:00
140 lines
4.7 KiB
TypeScript
140 lines
4.7 KiB
TypeScript
import '@angular/localize/init'
|
|
import { jest } from '@jest/globals'
|
|
import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'
|
|
import { TextDecoder, TextEncoder } from 'util'
|
|
if (process.env.NODE_ENV === 'test') {
|
|
setupZoneTestEnv()
|
|
}
|
|
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'
|
|
import localeZhHant from '@angular/common/locales/zh-Hant'
|
|
|
|
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)
|
|
registerLocaleData(localeZhHant)
|
|
|
|
/* 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 })
|
|
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() })
|
|
}
|
|
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()
|
|
|
|
// 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', () => ({}))
|