X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Fupdate_options.js;h=faf8f252a287d1ac8a343ad59c60103ae90ff735;hb=8021c59f150292bf1a12534e5092451140e49c77;hp=a0bd813f79ae507b05e537a5deef26a105d30264;hpb=1a27bd14b2938f17a3a9896d64645892a6b26a1e;p=dygraphs.git diff --git a/auto_tests/tests/update_options.js b/auto_tests/tests/update_options.js index a0bd813..faf8f25 100644 --- a/auto_tests/tests/update_options.js +++ b/auto_tests/tests/update_options.js @@ -25,19 +25,24 @@ UpdateOptionsTestCase.prototype.setUp = function() { UpdateOptionsTestCase.prototype.tearDown = function() { }; -UpdateOptionsTestCase.prototype.wrap = function(g) { +/* + * Tweaks the dygraph so it sets g._testDrawCalled to true when internal method + * drawGraph_ is called. Call unWrapDrawGraph when done with this. + */ +UpdateOptionsTestCase.prototype.wrapDrawGraph = function(g) { g._testDrawCalled = false; - var oldDrawGraph = Dygraph.prototype.drawGraph_; - Dygraph.prototype.drawGraph_ = function() { + g._oldDrawGraph = g.drawGraph_; + g.drawGraph_ = function() { g._testDrawCalled = true; - oldDrawGraph.call(g); + g._oldDrawGraph.call(g); } - - return oldDrawGraph; } -UpdateOptionsTestCase.prototype.unWrap = function(oldDrawGraph) { - Dygraph.prototype.drawGraph_ = oldDrawGraph; +/* + * See wrapDrawGraph + */ +UpdateOptionsTestCase.prototype.unwrapDrawGraph = function(g) { + g.drawGraph_ = g._oldDrawGraph; } UpdateOptionsTestCase.prototype.testStrokeAll = function() { @@ -49,9 +54,9 @@ UpdateOptionsTestCase.prototype.testStrokeAll = function() { // These options will allow us to jump to renderGraph_() // drawGraph_() will be skipped. - var oldDrawGraph = this.wrap(graph); + this.wrapDrawGraph(graph); graph.updateOptions(updatedOptions); - this.unWrap(oldDrawGraph); + this.unwrapDrawGraph(graph); assertFalse(graph._testDrawCalled); }; @@ -62,36 +67,35 @@ UpdateOptionsTestCase.prototype.testStrokeSingleSeries = function() { var optionsForY1 = { }; optionsForY1['strokeWidth'] = 3; - updatedOptions['Y1'] = optionsForY1; + updatedOptions['series'] = {'Y1': optionsForY1}; // These options will allow us to jump to renderGraph_() // drawGraph_() will be skipped. - var oldDrawGraph = this.wrap(graph); + this.wrapDrawGraph(graph); graph.updateOptions(updatedOptions); - this.unWrap(oldDrawGraph); + this.unwrapDrawGraph(graph); assertFalse(graph._testDrawCalled); }; UpdateOptionsTestCase.prototype.testSingleSeriesRequiresNewPoints = function() { var graphDiv = document.getElementById("graph"); var graph = new Dygraph(graphDiv, this.data, this.opts); - var updatedOptions = { }; - var optionsForY1 = { }; - var optionsForY2 = { }; - - // This will not require new points. - optionsForY1['strokeWidth'] = 2; - updatedOptions['Y1'] = optionsForY1; - - // This will require new points. - optionsForY2['stepPlot'] = true; - updatedOptions['Y2'] = optionsForY2; + var updatedOptions = { + series: { + Y1: { + strokeWidth: 2 + }, + Y2: { + stepPlot: true + } + } + }; // These options will not allow us to jump to renderGraph_() // drawGraph_() must be called - var oldDrawGraph = this.wrap(graph); + this.wrapDrawGraph(graph); graph.updateOptions(updatedOptions); - this.unWrap(oldDrawGraph); + this.unwrapDrawGraph(graph); assertTrue(graph._testDrawCalled); }; @@ -105,9 +109,9 @@ UpdateOptionsTestCase.prototype.testWidthChangeNeedsNewPoints = function() { // These options will not allow us to jump to renderGraph_() // drawGraph_() must be called - var oldDrawGraph = this.wrap(graph); + this.wrapDrawGraph(graph); graph.updateOptions(updatedOptions); - this.unWrap(oldDrawGraph); + this.unwrapDrawGraph(graph); assertTrue(graph._testDrawCalled); }; @@ -119,3 +123,51 @@ UpdateOptionsTestCase.prototype.testUpdateLabelsDivDoesntInfiniteLoop = function graph.updateOptions({labelsDiv : labelsDiv}); } +// Test https://github.com/danvk/dygraphs/issues/247 +UpdateOptionsTestCase.prototype.testUpdateColors = function() { + var graphDiv = document.getElementById("graph"); + var graph = new Dygraph(graphDiv, this.data, this.opts); + + var defaultColors = ["rgb(0,128,0)", "rgb(0,0,128)"]; + assertEquals(["rgb(0,128,0)", "rgb(0,0,128)"], graph.getColors()); + + var colors1 = [ "#aaa", "#bbb" ]; + graph.updateOptions({ colors: colors1 }); + assertEquals(colors1, graph.getColors()); + + // extra colors are ignored until you add additional data series. + var colors2 = [ "#ddd", "#eee", "#fff" ]; + graph.updateOptions({ colors: colors2 }); + assertEquals(["#ddd", "#eee"], graph.getColors()); + + graph.updateOptions({ file: + "X,Y1,Y2,Y3\n" + + "2011-01-01,2,3,4\n" + + "2011-02-02,5,3,2\n" + }); + assertEquals(colors2, graph.getColors()); + + graph.updateOptions({ colors: null, file: this.data }); + assertEquals(defaultColors, graph.getColors()); +} + +// Regression test for http://code.google.com/p/dygraphs/issues/detail?id=249 +// Verifies that setting 'legend: always' via update immediately shows the +// legend. +UpdateOptionsTestCase.prototype.testUpdateLegendAlways = function() { + var graphDiv = document.getElementById("graph"); + var graph = new Dygraph(graphDiv, this.data, this.opts); + + var legend = document.getElementsByClassName("dygraph-legend"); + assertEquals(1, legend.length); + legend = legend[0]; + assertEquals("", legend.innerHTML); + + graph.updateOptions({legend: 'always'}); + + legend = document.getElementsByClassName("dygraph-legend"); + assertEquals(1, legend.length); + legend = legend[0]; + assertNotEquals(-1, legend.textContent.indexOf("Y1")); + assertNotEquals(-1, legend.textContent.indexOf("Y2")); +};