import { enableFetchMocks } from 'jest-fetch-mock'; import MockDate from 'mockdate'; import moment from 'moment-timezone'; import tableData from './table/mock.data.json'; /* eslint-disable global-require */ if (typeof window !== 'undefined') { global.window.resizeTo = (width, height) => { global.window.innerWidth = width || global.window.innerWidth; global.window.innerHeight = height || global.window.innerHeight; global.window.dispatchEvent(new Event('resize')); }; global.window.scrollTo = () => {}; // ref: https://github.com/ant-design/ant-design/issues/18774 if (!window.matchMedia) { Object.defineProperty(global.window, 'matchMedia', { writable: true, configurable: true, value: jest.fn(() => ({ matches: false, addListener: jest.fn(), removeListener: jest.fn(), })), }); } } const Enzyme = require('enzyme'); Object.assign(Enzyme.ReactWrapper.prototype, { findObserver() { return this.find('ResizeObserver'); }, triggerResize() { const ob = this.findObserver(); ob.instance().onResize([{ target: ob.getDOMNode() }]); }, }); enableFetchMocks(); global.requestAnimationFrame = global.requestAnimationFrame || function requestAnimationFrame(cb) { return setTimeout(cb, 0); }; global.cancelAnimationFrame = global.cancelAnimationFrame || function cancelAnimationFrame() { return null; }; // browserMocks.js const localStorageMock = (() => { let store = {}; return { getItem(key) { return store[key] || null; }, setItem(key, value) { store[key] = value.toString(); }, clear() { store = {}; }, }; })(); Object.defineProperty(window, 'localStorage', { value: localStorageMock, }); Object.defineProperty(window, 'cancelAnimationFrame', { value: () => null, }); moment.tz.setDefault('UTC'); MockDate.set(1479799364000); const mockFormatExpression = { format: (value) => `¥ ${value.toString()}`, }; Intl.NumberFormat = jest.fn().mockImplementation(() => mockFormatExpression); Math.random = () => 0.8404419276253765; fetch.mockResponse(async () => { return { body: JSON.stringify(tableData) }; });