jsdom-testing-mocks
Version:
A set of tools for emulating browser behavior in jsdom environment
145 lines (117 loc) • 3.68 kB
text/typescript
import { mockDOMRect } from './DOMRect';
mockDOMRect();
describe('DOMRectReadOnly', () => {
test('constructor and props', () => {
const domRect = new DOMRectReadOnly(100, 100, 200, 200);
expect(domRect.x).toBe(100);
expect(domRect.y).toBe(100);
expect(domRect.width).toBe(200);
expect(domRect.height).toBe(200);
expect(domRect.top).toBe(100);
expect(domRect.right).toBe(300);
expect(domRect.bottom).toBe(300);
expect(domRect.left).toBe(100);
});
test('there should be no enumerable props', () => {
const domRect = new DOMRectReadOnly(100, 100, 200, 200);
expect(Object.keys(domRect)).toEqual([]);
});
it('should be impossible to set x, y, width, height', () => {
const domRect = new DOMRectReadOnly(100, 100, 200, 200);
// @ts-ignore
domRect.x = 150;
// @ts-ignore
domRect.y = 250;
// @ts-ignore
domRect.width = 350;
// @ts-ignore
domRect.height = 450;
expect(domRect.x).toBe(100);
expect(domRect.y).toBe(100);
expect(domRect.width).toBe(200);
expect(domRect.height).toBe(200);
});
it('should be impossible to set top, right, bottom, left', () => {
const domRect = new DOMRectReadOnly(100, 100, 200, 200);
// @ts-ignore
domRect.top = 150;
// @ts-ignore
domRect.right = 250;
// @ts-ignore
domRect.bottom = 350;
// @ts-ignore
domRect.left = 450;
expect(domRect.top).toBe(100);
expect(domRect.right).toBe(300);
expect(domRect.bottom).toBe(300);
expect(domRect.left).toBe(100);
});
test('toJSON', () => {
const domRect = new DOMRectReadOnly(100, 100, 200, 200);
expect(domRect.toJSON()).toEqual({
x: 100,
y: 100,
width: 200,
height: 200,
top: 100,
right: 300,
bottom: 300,
left: 100,
});
});
test('toString', () => {
const domRect = new DOMRectReadOnly(100, 100, 200, 200);
expect(domRect.toString()).toBe('[object DOMRectReadOnly]');
});
});
describe('DOMRect', () => {
test('constructor and props', () => {
const domRect = new DOMRect(100, 100, 200, 200);
expect(domRect.x).toBe(100);
expect(domRect.y).toBe(100);
expect(domRect.width).toBe(200);
expect(domRect.height).toBe(200);
expect(domRect.top).toBe(100);
expect(domRect.right).toBe(300);
expect(domRect.bottom).toBe(300);
expect(domRect.left).toBe(100);
});
test('there should be no enumerable props', () => {
const domRect = new DOMRect(100, 100, 200, 200);
expect(Object.keys(domRect)).toEqual([]);
});
it('should be possible to set x, y, width, height', () => {
const domRect = new DOMRect(100, 100, 200, 200);
domRect.x = 200;
domRect.y = 200;
domRect.width = 300;
domRect.height = 300;
expect(domRect.x).toBe(200);
expect(domRect.y).toBe(200);
expect(domRect.width).toBe(300);
expect(domRect.height).toBe(300);
expect(domRect.top).toBe(200);
expect(domRect.right).toBe(500);
expect(domRect.bottom).toBe(500);
expect(domRect.left).toBe(200);
});
it('should be impossible to set the top, right, bottom, left props', () => {
const domRect = new DOMRect(100, 100, 200, 200);
// @ts-ignore
domRect.top = 150;
// @ts-ignore
domRect.right = 250;
// @ts-ignore
domRect.bottom = 350;
// @ts-ignore
domRect.left = 450;
expect(domRect.top).toBe(100);
expect(domRect.right).toBe(300);
expect(domRect.bottom).toBe(300);
expect(domRect.left).toBe(100);
});
test('toString', () => {
const domRect = new DOMRect(100, 100, 200, 200);
expect(domRect.toString()).toBe('[object DOMRect]');
});
});