@netdata/charts
Version:
Netdata frontend SDK and chart utilities
81 lines • 1.8 kB
JavaScript
import eventOffset from "./eventOffset";
describe("eventOffset", function () {
var mockElement;
beforeEach(function () {
mockElement = {
getBoundingClientRect: jest.fn(function () {
return {
left: 100,
top: 50,
width: 200,
height: 150
};
})
};
});
it("calculates offset for mouse events", function () {
var event = {
target: mockElement,
clientX: 150,
clientY: 75,
type: "click"
};
var result = eventOffset(event);
expect(result).toEqual({
offsetX: 50,
offsetY: 25
});
});
it("calculates offset for touch events with initialTouches", function () {
var event = {
target: mockElement,
type: "touchstart"
};
var ctx = {
initialTouches: [{
pageX: 175,
pageY: 100
}]
};
var result = eventOffset(event, ctx);
expect(result).toEqual({
offsetX: 75,
offsetY: 50
});
});
it("handles touch events without initialTouches", function () {
var event = {
target: mockElement,
type: "touchmove"
};
var result = eventOffset(event, {});
expect(result).toEqual({
offsetX: NaN,
offsetY: NaN
});
});
it("uses srcElement as fallback for target", function () {
var event = {
srcElement: mockElement,
clientX: 120,
clientY: 60,
type: "mousedown"
};
var result = eventOffset(event);
expect(result).toEqual({
offsetX: 20,
offsetY: 10
});
});
it("handles events with no coordinates", function () {
var event = {
target: mockElement,
type: "click"
};
var result = eventOffset(event);
expect(result).toEqual({
offsetX: NaN,
offsetY: NaN
});
});
});