@quantlab/handsontable
Version:
Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs
119 lines (92 loc) • 3.3 kB
JavaScript
import Cursor from 'handsontable/plugins/contextMenu/cursor';
describe('ContextMenu', () => {
describe('Cursor', () => {
it('should initialize internal properties on construct (object literal)', () => {
var coords = {
top: 10,
left: 50,
width: 100,
height: 200
};
var cursor = new Cursor(coords);
expect(cursor.top).toBe(coords.top);
expect(cursor.topRelative).toBeLessThan(coords.top + 1);
expect(cursor.left).toBe(coords.left);
expect(cursor.leftRelative).toBeLessThan(coords.left + 1);
expect(cursor.scrollLeft).toBeGreaterThan(-1);
expect(cursor.scrollTop).toBeGreaterThan(-1);
expect(cursor.cellHeight).toBe(coords.height);
expect(cursor.cellWidth).toBe(coords.width);
});
it('should returns boolean value related to if element fits above the cursor', () => {
var coords = {
top: 10,
left: 50,
width: 100,
height: 200
};
var cursor = new Cursor(coords);
var fakeElement = {
offsetHeight: 9
};
expect(cursor.fitsAbove(fakeElement)).toBe(true);
fakeElement.offsetHeight = 10;
expect(cursor.fitsAbove(fakeElement)).toBe(true);
fakeElement.offsetHeight = 11;
expect(cursor.fitsAbove(fakeElement)).toBe(false);
});
it('should returns boolean value related to if element fits below the cursor', () => {
var coords = {
top: 10,
left: 50,
width: 100,
height: 200
};
var cursor = new Cursor(coords);
var fakeElement = {
offsetHeight: 9
};
var viewportHeight = 100;
expect(cursor.fitsBelow(fakeElement, viewportHeight)).toBe(true);
fakeElement.offsetHeight = 90;
expect(cursor.fitsBelow(fakeElement, viewportHeight)).toBe(true);
fakeElement.offsetHeight = 91;
expect(cursor.fitsBelow(fakeElement, viewportHeight)).toBe(false);
});
it('should returns boolean value related to if element fits on the right of the cursor', () => {
var coords = {
top: 10,
left: 20,
width: 30,
height: 200
};
var cursor = new Cursor(coords);
var fakeElement = {
offsetWidth: 9
};
var viewportWidth = 100;
expect(cursor.fitsOnRight(fakeElement, viewportWidth)).toBe(true);
fakeElement.offsetWidth = 50;
expect(cursor.fitsOnRight(fakeElement, viewportWidth)).toBe(true);
fakeElement.offsetWidth = 51;
expect(cursor.fitsOnRight(fakeElement, viewportWidth)).toBe(false);
});
it('should returns boolean value related to if element fits on the left of the cursor', () => {
var coords = {
top: 10,
left: 50,
width: 100,
height: 200
};
var cursor = new Cursor(coords);
var fakeElement = {
offsetWidth: 9
};
expect(cursor.fitsOnLeft(fakeElement)).toBe(true);
fakeElement.offsetWidth = 50;
expect(cursor.fitsOnLeft(fakeElement)).toBe(true);
fakeElement.offsetWidth = 51;
expect(cursor.fitsOnLeft(fakeElement)).toBe(false);
});
});
});