X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;ds=sidebyside;f=auto_tests%2Ftests%2Fplugins_legend.js;h=e2ee4f10597fc0abf17c7100cd6a3db28f301ba0;hb=HEAD;hp=29fcb03912db2333f357f8e0508d3d0c50ba2b45;hpb=89fdcedbda6906d90e15d84285c4f6c0b8d96d28;p=dygraphs.git diff --git a/auto_tests/tests/plugins_legend.js b/auto_tests/tests/plugins_legend.js index 29fcb03..e2ee4f1 100644 --- a/auto_tests/tests/plugins_legend.js +++ b/auto_tests/tests/plugins_legend.js @@ -1,15 +1,16 @@ -/** - * @fileoverview FILL THIS IN - * - * @author akiya.mizukoshi@gmail.com (Akiyah) - */ +import Dygraph from '../../src/dygraph'; +import LegendPlugin from '../../src/plugins/legend'; +import Util from './Util'; + describe("plugins-legend", function() { -beforeEach(function() { - document.body.innerHTML = "
"; -}); +var graph; -afterEach(function() { +cleanupAfterEach(); +beforeEach(function() { + var testDiv = document.getElementById('graph'); + testDiv.innerHTML = "
"; + graph = document.getElementById('inner-graph'); }); it('testLegendEscape', function() { @@ -24,10 +25,9 @@ it('testLegendEscape', function() { "3,0\n" ; - var graph = document.getElementById("graph"); var g = new Dygraph(graph, data, opts); - var legendPlugin = new Dygraph.Plugins.Legend(); + var legendPlugin = new LegendPlugin(); legendPlugin.activate(g); var e = { selectedX: 'selectedX', @@ -40,9 +40,115 @@ it('testLegendEscape', function() { } legendPlugin.select(e); - var legendSpan = $(legendPlugin.legend_div_).find("span b span"); - assert.equal("<script>alert('XSS')</script>", legendSpan.html()); + var legendSpan = legendPlugin.legend_div_.querySelector("span b span"); + assert.equal(legendSpan.innerHTML, "<script>alert('XSS')</script>"); +}); + + +it('should let labelsDiv be a string', function() { + var labelsDiv = document.getElementById('label'); + var g = new Dygraph(graph, 'X,Y\n1,2\n', {labelsDiv: 'label'}); +null + g.setSelection(0); + assert.equal('1: Y: 2', Util.nbspToSpace(labelsDiv.textContent)); +}); + +it('should let labelsDiv be an Element', function() { + var labelsDiv = document.getElementById('label'); + var g = new Dygraph(graph, 'X,Y\n1,2\n', { labelsDiv: labelsDiv }); + assert.isNull(labelsDiv.getAttribute('class')); // dygraph-legend not added. + g.setSelection(0); + assert.equal('1: Y: 2', Util.nbspToSpace(labelsDiv.textContent)); +}); + +it('should render dashed patterns', function() { + var g = new Dygraph(graph, 'X,Y\n1,2\n', { + strokePattern: [5, 5], + color: 'red', + legend: 'always' + }); + + // The legend has a dashed line and a label. + var legendEl = document.querySelector('.dygraph-legend > span'); + assert.equal(' Y', legendEl.textContent); + var dashEl = document.querySelector('.dygraph-legend > span > div'); + assert.equal(window.getComputedStyle(dashEl)['border-bottom-color'], + 'rgb(255, 0, 0)'); }); +it('should use a legendFormatter', function() { + var calls = []; + var g = new Dygraph(graph, 'X,Y\n1,2\n', { + color: 'red', + legend: 'always', + legendFormatter: function(data) { + calls.push(data); + // Note: can't check against `g` because it's not defined yet. + assert(this.toString().indexOf('Dygraph') >= 0); + return ''; + } + }); + + assert(calls.length == 1); // legend for no selected points + g.setSelection(0); + assert(calls.length == 2); // legend with selected points + g.clearSelection(); + assert(calls.length == 3); + + assert.equal(calls[0].x, undefined); + assert.equal(calls[1].x, 1); + assert.equal(calls[1].xHTML, '1'); + assert.equal(calls[2].x, undefined); + + assert.equal(calls[0].series.length, 1); + assert.equal(calls[1].series.length, 1); + assert.equal(calls[2].series.length, 1); + + assert.equal(calls[0].series[0].y, undefined); + assert.equal(calls[1].series[0].label, 'Y'); + assert.equal(calls[1].series[0].labelHTML, 'Y'); + assert.equal(calls[1].series[0].y, 2); + assert.equal(calls[1].series[0].yHTML, '2'); + assert.equal(calls[1].series[0].isVisible, true); + assert.equal(calls[2].series[0].y, undefined); +}); + +it('should work with highlight series', () => { + var calls = []; + var g = new Dygraph(graph, 'X,y1,y2\n1,2,3\n', { + highlightSeriesOpts: { + strokeWidth: 3, + } + }); + + g.setSelection(false, 'y2'); + assert.equal(Util.getLegend(graph), ''); +}); + +it('should include point drawn where canvas-y is 0', function () { + var graph = document.getElementById("graph"); + var calls = [] + function callback(data) { + calls.push(data); + }; + + var g = new Dygraph(document.getElementById("graph"), + "X,Y\n" + + "1,5\n" + + "1,10\n" + + "1,12\n", + { + legendFormatter: callback, + axes: { + y: { + valueRange: [0, 10] + } + } + }); + g.setSelection(1); + var data = calls[1]; + assert.isTrue(data.series[0].isVisible); + assert.notEqual(data.series[0].yHTML, ''); +}); });