prometheus
40 строк · 1.3 Кб
1import { configure } from 'enzyme';
2import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
3import { GlobalWithFetchMock } from 'jest-fetch-mock';
4import 'mutationobserver-shim'; // Needed for CodeMirror.
5import './globals';
6import 'jest-canvas-mock';
7
8configure({ adapter: new Adapter() });
9const customGlobal: GlobalWithFetchMock = global as GlobalWithFetchMock;
10customGlobal.fetch = require('jest-fetch-mock');
11customGlobal.fetchMock = customGlobal.fetch;
12
13// https://stackoverflow.com/questions/39830580/jest-test-fails-typeerror-window-matchmedia-is-not-a-function
14// https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom
15Object.defineProperty(window, 'matchMedia', {
16writable: true,
17value: jest.fn().mockImplementation((query) => ({
18matches: false,
19media: query,
20onchange: null,
21addListener: jest.fn(), // Deprecated
22removeListener: jest.fn(), // Deprecated
23addEventListener: jest.fn(),
24removeEventListener: jest.fn(),
25dispatchEvent: jest.fn(),
26})),
27});
28
29// CodeMirror in the expression input requires this DOM API. When we upgrade react-scripts
30// and the associated Jest deps, hopefully this won't be needed anymore.
31document.getSelection = function () {
32return {
33addRange: function () {
34return;
35},
36removeAllRanges: function () {
37return;
38},
39};
40};
41