pgadmin4/web/regression/javascript/setup-jest.js

98 lines
1.8 KiB
JavaScript
Raw Normal View History

import '@testing-library/jest-dom';
class BroadcastChannelMock {
onmessage() {/* mock */}
postMessage(data) {
this.onmessage({ data });
}
}
global.BroadcastChannel = BroadcastChannelMock;
global.__webpack_public_path__ = '';
global.matchMedia = (query)=>({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(), // deprecated
removeListener: jest.fn(), // deprecated
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn(),
});
class GeneralObserver {
observe() {return null;}
unobserve() {return null;}
disconnect() {return null;}
}
global.IntersectionObserver = GeneralObserver;
global.ResizeObserver = GeneralObserver;
import lodash from 'lodash';
global._ = lodash;
// Console error should not be called
global.beforeAll(() => {
jest.spyOn(console, 'error');
});
global.beforeEach(() => {
console.error.mockClear();
});
global.afterEach(() => {
// eslint-disable-next-line no-undef
expect(console.error).not.toHaveBeenCalled();
});
window.HTMLElement.prototype.scrollIntoView = function() {};
// required for Codemirror 6 to run in jsdom
document.createRange = () => {
const range = new Range();
range.getBoundingClientRect = jest.fn();
range.getClientRects = jest.fn(() => ({
item: () => null,
length: 0,
}));
return range;
};
// for virtual tables, height should exist.
Element.prototype.getBoundingClientRect = jest.fn(function () {
if (this.classList?.contains('pgrt')) {
return {
width: 400,
height: 400,
top: 0,
left: 0,
bottom: 0,
right: 0,
x: 0,
y: 0,
toJSON: () => {},
};
}
return {
width: 0,
height: 0,
top: 0,
left: 0,
bottom: 0,
right: 0,
x: 0,
y: 0,
toJSON: () => {},
};
});
jest.setTimeout(18000); // 1 second