X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Fscrolling_div.js;h=ce95a7ecd394e9c2d8bdc3f90e651983eb14bd32;hb=24f982449792c7ba2a56af0e1e428a0896702080;hp=a97874b7a8e1e255e3ab91ee461a1787a42cc542;hpb=22bce4f209d99203fcb3c3892ddf5ddb6d359b93;p=dygraphs.git diff --git a/auto_tests/tests/scrolling_div.js b/auto_tests/tests/scrolling_div.js index a97874b..ce95a7e 100644 --- a/auto_tests/tests/scrolling_div.js +++ b/auto_tests/tests/scrolling_div.js @@ -3,9 +3,11 @@ * * @author konigsberg@google.com (Robert Konigsbrg) */ -var ScrollingDivTestCase = TestCase("scrolling-div"); +describe("scrolling-div", function() { -ScrollingDivTestCase.prototype.setUp = function() { +var point, g; + +beforeEach(function() { var LOREM_IPSUM = "

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n" + @@ -17,11 +19,10 @@ var LOREM_IPSUM = "laborum.

"; document.body.innerHTML = - "
" + - "
" + + "
" + + "
" + "
" + LOREM_IPSUM + "
" + "
" + LOREM_IPSUM + "
" + - "" + "
"; var data = [ @@ -36,30 +37,52 @@ var LOREM_IPSUM = var graph = document.getElementById("graph"); - this.point = null; - var self = this; - this.g = new Dygraph(graph, data, + point = null; + g = new Dygraph(graph, data, { labels : ['a', 'b'], drawPoints : true, highlightCircleSize : 6, - pointClickCallback : function(evt, point) { - self.point = point; + pointClickCallback : function(evt, p) { + point = p; } } ); +}); + +// This is usually something like 15, but for OS X Lion and its auto-hiding +// scrollbars, it's 0. This is a large enough difference that we need to +// consider it when synthesizing clicks. +// Adapted from http://davidwalsh.name/detect-scrollbar-width +var detectScrollbarWidth = function() { + // Create the measurement node + var scrollDiv = document.createElement("div"); + scrollDiv.style.width = "100px"; + scrollDiv.style.height = "100px"; + scrollDiv.style.overflow = "scroll"; + scrollDiv.style.position = "absolute"; + scrollDiv.style.top = "-9999px"; + document.body.appendChild(scrollDiv); + + // Get the scrollbar width + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + + // Delete the DIV + document.body.removeChild(scrollDiv); + + return scrollbarWidth; }; -ScrollingDivTestCase.prototype.tearDown = function() { -}; +afterEach(function() { +}); /** * This tests that when the nested div is unscrolled, things work normally. */ -ScrollingDivTestCase.prototype.testUnscrolledDiv = function() { +it('testUnscrolledDiv', function() { - window.location.href="#TOP"; + document.getElementById('scroller').scrollTop = 0; var clickOn4_40 = { clientX: 244, @@ -68,31 +91,33 @@ ScrollingDivTestCase.prototype.testUnscrolledDiv = function() { screenY: 320 }; - DygraphOps.dispatchCanvasEvent(this.g, DygraphOps.createEvent(clickOn4_40, { type : 'mousemove' })); - DygraphOps.dispatchCanvasEvent(this.g, DygraphOps.createEvent(clickOn4_40, { type : 'mousedown' })); - DygraphOps.dispatchCanvasEvent(this.g, DygraphOps.createEvent(clickOn4_40, { type : 'mouseup' })); + DygraphOps.dispatchCanvasEvent(g, DygraphOps.createEvent(clickOn4_40, { type : 'mousemove' })); + DygraphOps.dispatchCanvasEvent(g, DygraphOps.createEvent(clickOn4_40, { type : 'mousedown' })); + DygraphOps.dispatchCanvasEvent(g, DygraphOps.createEvent(clickOn4_40, { type : 'mouseup' })); - assertEquals(40, this.point.xval); - assertEquals(4, this.point.yval); -}; + assert.equal(40, point.xval); + assert.equal(4, point.yval); +}); /** * This tests that when the nested div is scrolled, things work normally. */ -ScrollingDivTestCase.prototype.testScrolledDiv = function() { - window.location.href="#BOTTOM"; +it('testScrolledDiv', function() { + document.getElementById('scroller').scrollTop = 117; var clickOn4_40 = { clientX: 244, - clientY: 20, + clientY: 30 - detectScrollbarWidth(), screenX: 416, screenY: 160 }; - DygraphOps.dispatchCanvasEvent(this.g, DygraphOps.createEvent(clickOn4_40, { type : 'mousemove' })); - DygraphOps.dispatchCanvasEvent(this.g, DygraphOps.createEvent(clickOn4_40, { type : 'mousedown' })); - DygraphOps.dispatchCanvasEvent(this.g, DygraphOps.createEvent(clickOn4_40, { type : 'mouseup' })); + DygraphOps.dispatchCanvasEvent(g, DygraphOps.createEvent(clickOn4_40, { type : 'mousemove' })); + DygraphOps.dispatchCanvasEvent(g, DygraphOps.createEvent(clickOn4_40, { type : 'mousedown' })); + DygraphOps.dispatchCanvasEvent(g, DygraphOps.createEvent(clickOn4_40, { type : 'mouseup' })); - assertEquals(40, this.point.xval); - assertEquals(4, this.point.yval); -}; + assert.equal(40, point.xval); + assert.equal(4, point.yval); +}); + +});