riot-web/test/setupTests.js

54 lines
1.7 KiB
JavaScript
Raw Normal View History

2021-06-11 13:33:02 +02:00
import { TextEncoder, TextDecoder } from 'util';
import Adapter from "@wojtekmaj/enzyme-adapter-react-17";
import { configure } from "enzyme";
import "blob-polyfill"; // https://github.com/jsdom/jsdom/issues/2555
2019-12-17 12:47:01 +01:00
import * as languageHandler from "../src/languageHandler";
import SdkConfig, { DEFAULTS } from '../src/SdkConfig';
2019-12-17 12:47:01 +01:00
languageHandler.setLanguage('en');
languageHandler.setMissingEntryGenerator(key => key.split("|", 2)[1]);
// uninitialised SdkConfig causes lots of warnings in console
// init with defaults
SdkConfig.put(DEFAULTS);
require('jest-fetch-mock').enableMocks();
2021-06-11 13:33:02 +02:00
// jest 27 removes setImmediate from jsdom
// polyfill until setImmediate use in client can be removed
global.setImmediate = callback => setTimeout(callback, 0);
2022-02-18 14:51:27 +01:00
// Stub ResizeObserver
class ResizeObserver {
observe() {} // do nothing
unobserve() {} // do nothing
disconnect() {} // do nothing
}
window.ResizeObserver = ResizeObserver;
2021-06-11 13:33:02 +02:00
// polyfilling TextEncoder as it is not available on JSDOM
// view https://github.com/facebook/jest/issues/9983
global.TextEncoder = TextEncoder;
global.TextDecoder = TextDecoder;
configure({ adapter: new Adapter() });
// maplibre requires a createObjectURL mock
global.URL.createObjectURL = jest.fn();
// matchMedia is not included in jsdom
const mockMatchMedia = jest.fn().mockImplementation(query => ({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(), // Deprecated
removeListener: jest.fn(), // Deprecated
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn(),
}));
global.matchMedia = mockMatchMedia;
window.HTMLElement.prototype.scrollIntoView = jest.fn();