Fork off Karma file for in-browser debug
[dygraphs.git] / auto_tests / tests / update_while_panning.js
1 /**
2 * @fileoverview Regression test for a bug involving data update while panning.
3 *
4 * See http://stackoverflow.com/questions/9528173
5 *
6 * @author dan@dygraphs.com (Dan Vanderkam)
7 */
8 describe("update-while-panning", function() {
9
10 beforeEach(function() {
11 document.body.innerHTML = "<div id='graph'></div>";
12 });
13
14 afterEach(function() {
15 });
16
17 // This tests the following sequence:
18 // 1. Begin dragging a chart (x-panning)
19 // 2. Do a data update (updateOptions({file: ...}))
20 // 3. Verify that the y-axis is still well-defined.
21 it('testUpdateWhilePanning', function() {
22 var sinewave = function(start, limit, step) {
23 var data = [];
24 for (var x = start; x < limit; x += step) {
25 data.push([x, Math.sin(x)]);
26 }
27 return data;
28 };
29
30 var opts = {
31 width: 480,
32 height: 320,
33 valueRange: [-2, 2],
34 labels: ['X', 'Y']
35 };
36
37 var graph = document.getElementById("graph");
38
39 var g = new Dygraph(graph, sinewave(0, 6, 0.1), opts);
40 assert.deepEqual([-2, 2], g.yAxisRange());
41
42 // Start a pan, but don't finish it yet.
43 DygraphOps.dispatchMouseDown_Point(g, 200, 100, {shiftKey: true});
44 DygraphOps.dispatchMouseMove_Point(g, 100, 100, {shiftKey: true});
45 assert.deepEqual([-2, 2], g.yAxisRange());
46
47 // Now do a data update. y-axis should remain the same.
48 g.updateOptions({file: sinewave(0, 7, 0.1)});
49 assert.deepEqual([-2, 2], g.yAxisRange());
50
51 // Keep the pan going.
52 DygraphOps.dispatchMouseMove_Point(g, 50, 100, {shiftKey: true});
53 assert.deepEqual([-2, 2], g.yAxisRange());
54
55 // Now finish the pan.
56 DygraphOps.dispatchMouseUp_Point(g, 100, 100, {shiftKey: true});
57 assert.deepEqual([-2, 2], g.yAxisRange());
58 });
59
60
61 });