From acc8697c8fa1ac9e4c457f513ee443f9dacbd3e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 12 Jan 2016 11:07:22 -0500 Subject: [PATCH 1/2] specify clientX and clientY when simulating mouse events --- test/jasmine/assets/mouse_event.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/jasmine/assets/mouse_event.js b/test/jasmine/assets/mouse_event.js index c8fd5b77028..053e98a8a1b 100644 --- a/test/jasmine/assets/mouse_event.js +++ b/test/jasmine/assets/mouse_event.js @@ -1,6 +1,11 @@ -module.exports = function(type, x, y, opts) { +module.exports = function(type, x, y) { + var options = { + bubbles: true, + clientX: x, + clientY: y + }; + var el = document.elementFromPoint(x,y); - var options = opts || { bubbles: true }; var ev = new window.MouseEvent(type, options); el.dispatchEvent(ev); }; From 5084ae99206f10a7f72a54fecccf95a8ba9f2945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 12 Jan 2016 11:08:53 -0500 Subject: [PATCH 2/2] add click event test: - use mouse event asset to simulation an svg2d click event - plotly_click is a combinaison of a mousemove, mousedown and mouseup mouse events - use that to inspect click event data --- test/jasmine/tests/click_test.js | 55 ++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 test/jasmine/tests/click_test.js diff --git a/test/jasmine/tests/click_test.js b/test/jasmine/tests/click_test.js new file mode 100644 index 00000000000..50aa73bf636 --- /dev/null +++ b/test/jasmine/tests/click_test.js @@ -0,0 +1,55 @@ +var Plotly = require('@src/index'); +var Lib = require('@src/lib'); + +var createGraphDiv = require('../assets/create_graph_div'); +var destroyGraphDiv = require('../assets/destroy_graph_div'); +var mouseEvent = require('../assets/mouse_event'); + + +describe('click event', function() { + var mock = require('@mocks/14.json'); + + describe('event data', function() { + var mockCopy = Lib.extendDeep({}, mock), + clientX = 351, + clientY = 223, + gd; + + function click() { + mouseEvent('mousemove', clientX, clientY); + mouseEvent('mousedown', clientX, clientY); + mouseEvent('mouseup', clientX, clientY); + } + + beforeEach(function(done) { + gd = createGraphDiv(); + + Plotly.plot(gd, mockCopy.data, mockCopy.layout) + .then(done); + }); + + afterEach(destroyGraphDiv); + + it('should contain the correct fields', function() { + var futureData; + + gd.on('plotly_click', function(data) { + futureData = data; + }); + + click(); + + expect(futureData.points.length).toEqual(1); + + var pt = futureData.points[0]; + expect(Object.keys(pt)).toEqual([ + 'data', 'fullData', 'curveNumber', 'pointNumber', + 'x', 'y', 'xaxis', 'yaxis' + ]); + expect(pt.curveNumber).toEqual(0); + expect(pt.pointNumber).toEqual(11); + expect(pt.x).toEqual(0.125); + expect(pt.y).toEqual(2.125); + }); + }); +});