Skip to content

Commit 2df7c4b

Browse files
committed
Verify hoverData key values in hover/click anywhere tests
1 parent e7934c9 commit 2df7c4b

File tree

1 file changed

+41
-5
lines changed

1 file changed

+41
-5
lines changed

test/jasmine/tests/hover_click_anywhere_test.js

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,14 @@ describe('hoveranywhere', function() {
5252

5353
expect(hoverData).toBeDefined();
5454
expect(hoverData.points).toEqual([]);
55+
expect(hoverData.xaxes.length).toBe(1);
56+
expect(hoverData.yaxes.length).toBe(1);
57+
expect(hoverData.xaxes[0]._id).toBe('x');
58+
expect(hoverData.yaxes[0]._id).toBe('y');
5559
expect(hoverData.xvals.length).toBe(1);
5660
expect(hoverData.yvals.length).toBe(1);
57-
expect(typeof hoverData.xvals[0]).toBe('number');
61+
expect(hoverData.xvals[0]).toBeCloseTo(250 / 30, 2);
62+
expect(hoverData.yvals[0]).toBeCloseTo(10 - 50 / 30, 2);
5863
})
5964
.then(done, done.fail);
6065
});
@@ -80,8 +85,29 @@ describe('hoveranywhere', function() {
8085
_hover(60, 210);
8186

8287
expect(hoverData.points.length).toBe(1);
83-
expect(hoverData.points[0].x).toBe(2);
84-
expect(hoverData.points[0].y).toBe(3);
88+
var pt = hoverData.points[0];
89+
expect(pt.x).toBe(2);
90+
expect(pt.y).toBe(3);
91+
expect(pt.curveNumber).toBe(0);
92+
expect(pt.pointNumber).toBe(1);
93+
// xPixel/yPixel: plot-area px + margin (60+50=110, 210+50=260)
94+
expect(pt.xPixel).toBeCloseTo(110, 1);
95+
expect(pt.yPixel).toBeCloseTo(260, 1);
96+
// bbox is page-relative (xPixel/yPixel + graph div page offset);
97+
// center of bbox should equal xPixel/yPixel + page offset
98+
var gLeft = gd.offsetLeft + gd.clientLeft;
99+
var gTop = gd.offsetTop + gd.clientTop;
100+
expect(pt.bbox).toBeDefined();
101+
expect((pt.bbox.x0 + pt.bbox.x1) / 2).toBeCloseTo(110 + gLeft, 1);
102+
expect((pt.bbox.y0 + pt.bbox.y1) / 2).toBeCloseTo(260 + gTop, 1);
103+
expect(pt.bbox.x0).toBeLessThan(pt.bbox.x1);
104+
expect(pt.bbox.y0).toBeLessThan(pt.bbox.y1);
105+
expect(hoverData.xaxes.length).toBe(1);
106+
expect(hoverData.yaxes.length).toBe(1);
107+
expect(hoverData.xvals.length).toBe(1);
108+
expect(hoverData.yvals.length).toBe(1);
109+
expect(hoverData.xvals[0]).toBeCloseTo(2, 2);
110+
expect(hoverData.yvals[0]).toBeCloseTo(3, 2);
85111
})
86112
.then(done, done.fail);
87113
});
@@ -112,11 +138,20 @@ describe('clickanywhere', function() {
112138
makePlot(gd, {clickanywhere: true}).then(function() {
113139
gd.on('plotly_click', function(d) { clickData = d; });
114140

141+
var bb = gd.getBoundingClientRect();
115142
var s = gd._fullLayout._size;
116-
click(s.l + 250, s.t + 50);
143+
click(bb.left + s.l + 250, bb.top + s.t + 50);
117144

118145
expect(clickData).toBeDefined();
119146
expect(clickData.points).toEqual([]);
147+
expect(clickData.xaxes.length).toBe(1);
148+
expect(clickData.yaxes.length).toBe(1);
149+
expect(clickData.xvals.length).toBe(1);
150+
expect(clickData.yvals.length).toBe(1);
151+
// click at 250px into 300px plot area, xrange [0,10]: 250/300*10 = 8.33
152+
expect(clickData.xvals[0]).toBeCloseTo(250 / 30, 2);
153+
// click at 50px into 300px plot area, yrange [0,10]: 10 - 50/300*10 = 8.33
154+
expect(clickData.yvals[0]).toBeCloseTo(10 - 50 / 30, 2);
120155
})
121156
.then(done, done.fail);
122157
});
@@ -127,8 +162,9 @@ describe('clickanywhere', function() {
127162
makePlot(gd).then(function() {
128163
gd.on('plotly_click', function(d) { clickData = d; });
129164

165+
var bb = gd.getBoundingClientRect();
130166
var s = gd._fullLayout._size;
131-
click(s.l + 250, s.t + 50);
167+
click(bb.left + s.l + 250, bb.top + s.t + 50);
132168

133169
expect(clickData).toBeUndefined();
134170
})

0 commit comments

Comments
 (0)