|
1 | 1 | var RangeSelector = require('@src/components/rangeselector'); |
2 | 2 | var getUpdateObject = require('@src/components/rangeselector/get_update_object'); |
3 | 3 |
|
| 4 | +var Plotly = require('@lib'); |
| 5 | +var Lib = require('@src/lib'); |
| 6 | +var d3 = require('d3'); |
| 7 | +var createGraphDiv = require('../assets/create_graph_div'); |
| 8 | +var destroyGraphDiv = require('../assets/destroy_graph_div'); |
| 9 | +var getRectCenter = require('../assets/get_rect_center'); |
| 10 | +var mouseEvent = require('../assets/mouse_event'); |
4 | 11 |
|
5 | 12 |
|
6 | 13 | describe('[range selector suite]', function() { |
@@ -286,5 +293,53 @@ describe('[range selector suite]', function() { |
286 | 293 |
|
287 | 294 | }); |
288 | 295 |
|
| 296 | + describe('interactions:', function() { |
| 297 | + var mock = require('@mocks/range_selector.json'); |
| 298 | + |
| 299 | + var gd, mockCopy; |
| 300 | + |
| 301 | + beforeEach(function(done) { |
| 302 | + gd = createGraphDiv(); |
| 303 | + mockCopy = Lib.extendDeep({}, mock); |
| 304 | + |
| 305 | + Plotly.plot(gd, mockCopy.data, mockCopy.layout).then(done); |
| 306 | + }); |
| 307 | + |
| 308 | + afterEach(destroyGraphDiv); |
| 309 | + |
| 310 | + function assertNodeCount(query, cnt) { |
| 311 | + expect(d3.selectAll(query).size()).toEqual(cnt); |
| 312 | + } |
| 313 | + |
| 314 | + it('should display ', function() { |
| 315 | + assertNodeCount('.rangeselector', 1); |
| 316 | + assertNodeCount('.button', mockCopy.layout.xaxis.rangeselector.buttons.length); |
| 317 | + }); |
| 318 | + |
| 319 | + it('should be able to be removed by `relayout`', function(done) { |
| 320 | + |
| 321 | + Plotly.relayout(gd, 'xaxis.rangeselector.visible', false).then(function() { |
| 322 | + assertNodeCount('.rangeselector', 0); |
| 323 | + assertNodeCount('.button', 0); |
| 324 | + done(); |
| 325 | + }); |
| 326 | + |
| 327 | + }); |
| 328 | + |
| 329 | + it('should update range when clicked', function() { |
| 330 | + var range0 = gd.layout.xaxis.range[0]; |
| 331 | + var buttons = d3.selectAll('.button').select('rect'); |
| 332 | + |
| 333 | + var pos0 = getRectCenter(buttons[0][0]); |
| 334 | + var posReset = getRectCenter(buttons[0][buttons.size()-1]); |
| 335 | + |
| 336 | + mouseEvent('click', pos0[0], pos0[1]); |
| 337 | + expect(gd.layout.xaxis.range[0]).toBeGreaterThan(range0); |
| 338 | + |
| 339 | + mouseEvent('click', posReset[0], posReset[1]); |
| 340 | + expect(gd.layout.xaxis.range[0]).toEqual(range0); |
| 341 | + }); |
| 342 | + |
| 343 | + }); |
289 | 344 |
|
290 | 345 | }); |
0 commit comments