Add new issue and PR templates
[dygraphs.git] / auto_tests / tests / interaction_model.js
index 41d0e43..a846df5 100644 (file)
@@ -3,14 +3,14 @@
  *
  * @author konigsberg@google.com (Robert Konigsbrg)
  */
-describe("interaction-model", function() {
 
-beforeEach(function() {
-  document.body.innerHTML = "<div id='graph'></div>";
-});
+import Dygraph from '../../src/dygraph';
+import DygraphInteraction from '../../src/dygraph-interaction-model';
+import DygraphOps from './DygraphOps';
 
-afterEach(function() {
-});
+describe("interaction-model", function() {
+
+cleanupAfterEach();
 
 var data1 = "X,Y\n" +
     "20,-1\n" +
@@ -19,15 +19,16 @@ var data1 = "X,Y\n" +
     "23,0\n";
 
 var data2 =
-    [[1, 10],
-    [2, 20],
-    [3, 30],
-    [4, 40],
-    [5, 120],
-    [6, 50],
-    [7, 70],
-    [8, 90],
-    [9, 50]];
+    "X,Y\n" +
+    "1,10\n" +
+    "2,20\n" +
+    "3,30\n" +
+    "4,40\n" +
+    "5,120\n" +
+    "6,50\n" +
+    "7,70\n" +
+    "8,90\n" +
+    "9,50\n";
 
 function getXLabels() {
   var x_labels = document.getElementsByClassName("dygraph-axis-label-x");
@@ -99,15 +100,15 @@ it('testClickCallbackIsCalledOnCustomPan', function() {
 
   function customDown(event, g, context) {
     context.initializeMouseDown(event, g, context);
-    Dygraph.startPan(event, g, context);
+    DygraphInteraction.startPan(event, g, context);
   }
 
   function customMove(event, g, context) {
-    Dygraph.movePan(event, g, context);
+    DygraphInteraction.movePan(event, g, context);
   }
 
   function customUp(event, g, context) {
-    Dygraph.endPan(event, g, context);
+    DygraphInteraction.endPan(event, g, context);
   }
 
   var opts = {
@@ -152,7 +153,7 @@ it('testClickCallbackIsCalledWithNonInteractiveModel', function() {
     width: 100,
     height : 100,
     clickCallback : clickCallback,
-    interactionModel : Dygraph.Interaction.nonInteractiveModel_
+    interactionModel : DygraphInteraction.nonInteractiveModel_
   };
 
   var graph = document.getElementById("graph");
@@ -169,15 +170,16 @@ it('testClickCallbackIsCalledWithNonInteractiveModel', function() {
  * A sanity test to ensure pointClickCallback is called.
  */
 it('testPointClickCallback', function() {
-  var clicked;
-  var g = new Dygraph(document.getElementById("graph"), data2, {
-    pointClickCallback : function(event, point) {
+  var clicked = null;
+  var g = new Dygraph('graph', data2, {
+    pointClickCallback: function(event, point) {
       clicked = point;
     }
   });
 
   clickAt(g, 4, 40);
 
+  assert.isNotNull(clicked);
   assert.equal(4, clicked.xval);
   assert.equal(40, clicked.yval);
 });
@@ -455,4 +457,49 @@ describe('animated zooms', function() {
 
 });
 
+//bulk copied from "testCorrectAxisValueRangeAfterUnzoom"
+//tests if the xRangePad is taken into account after unzoom.
+it('testCorrectAxisPaddingAfterUnzoom', function() {
+  var g = new Dygraph(document.getElementById("graph"),
+      data2, {
+        valueRange: [1, 50],
+        dateWindow: [1, 9],
+        xRangePad: 10,
+        animatedZooms:false
+      });
+
+  var extremes = g.xAxisExtremes();
+  
+  // Zoom x axis
+  DygraphOps.dispatchMouseDown_Point(g, 100, 100);
+  DygraphOps.dispatchMouseMove_Point(g, 130, 100);
+  DygraphOps.dispatchMouseUp_Point(g, 130, 100);
+
+  // Zoom y axis
+  DygraphOps.dispatchMouseDown_Point(g, 100, 100);
+  DygraphOps.dispatchMouseMove_Point(g, 100, 130);
+  DygraphOps.dispatchMouseUp_Point(g, 100, 130);
+  var currentYAxisRange = g.yAxisRange();
+  var currentXAxisRange = g.xAxisRange();
+  
+  //check that the range for the axis has changed
+  assert.notEqual(1, currentXAxisRange[0]);
+  assert.notEqual(10, currentXAxisRange[1]);
+  assert.notEqual(1, currentYAxisRange[0]);
+  assert.notEqual(50, currentYAxisRange[1]);
+  
+  // unzoom by doubleclick.  This is really the order in which a browser
+  // generates events, and we depend on it.
+  DygraphOps.dispatchMouseDown_Point(g, 10, 10);
+  DygraphOps.dispatchMouseUp_Point(g, 10, 10);
+  DygraphOps.dispatchMouseDown_Point(g, 10, 10);
+  DygraphOps.dispatchMouseUp_Point(g, 10, 10);
+  DygraphOps.dispatchDoubleClick(g, null);
+  
+  // check if range for x-axis was reset to original value 
+  var newXAxisRange = g.xAxisRange();
+  assert.equal(extremes[0], newXAxisRange[0]);
+  assert.equal(extremes[1], newXAxisRange[1]);
+});
+
 });