5f67591590842147a44e861de51a1f9657b72198
1 import Dygraph from
'../../src/dygraph';
2 import LegendPlugin from
'../../src/plugins/legend';
3 import Util from
'./Util';
5 describe("plugins-legend", function() {
10 beforeEach(function() {
11 var testDiv
= document
.getElementById('graph');
12 testDiv
.innerHTML
= "<div id='inner-graph'></div><div id='label'></div>";
13 graph
= document
.getElementById('inner-graph');
16 it('testLegendEscape', function() {
21 var data
= "X,<script>alert('XSS')</script>\n" +
28 var g
= new Dygraph(graph
, data
, opts
);
30 var legendPlugin
= new LegendPlugin();
31 legendPlugin
.activate(g
);
33 selectedX
: 'selectedX',
36 name
: "<script>alert('XSS')</script>",
41 legendPlugin
.select(e
);
43 var legendSpan
= legendPlugin
.legend_div_
.querySelector("span b span");
44 assert
.equal(legendSpan
.innerHTML
, "<script>alert('XSS')</script>");
48 it('should let labelsDiv be a string', function() {
49 var labelsDiv
= document
.getElementById('label');
50 var g
= new Dygraph(graph
, 'X,Y\n1,2\n', {labelsDiv
: 'label'});
53 assert
.equal('1: Y: 2', Util
.nbspToSpace(labelsDiv
.textContent
));
56 it('should let labelsDiv be an Element', function() {
57 var labelsDiv
= document
.getElementById('label');
58 var g
= new Dygraph(graph
, 'X,Y\n1,2\n', { labelsDiv
: labelsDiv
});
59 assert
.isNull(labelsDiv
.getAttribute('class')); // dygraph-legend not added.
61 assert
.equal('1: Y: 2', Util
.nbspToSpace(labelsDiv
.textContent
));
64 it('should render dashed patterns', function() {
65 var g
= new Dygraph(graph
, 'X,Y\n1,2\n', {
66 strokePattern
: [5, 5],
71 // The legend has a dashed line and a label.
72 var legendEl
= document
.querySelector('.dygraph-legend > span');
73 assert
.equal(' Y', legendEl
.textContent
);
74 var dashEl
= document
.querySelector('.dygraph-legend > span > div');
75 assert
.equal(window
.getComputedStyle(dashEl
)['border-bottom-color'],
79 it('should use a legendFormatter', function() {
81 var g
= new Dygraph(graph
, 'X,Y\n1,2\n', {
84 legendFormatter
: function(data
) {
86 // Note: can't check against `g` because it's not defined yet.
87 assert(this.toString().indexOf('Dygraph') >= 0);
92 assert(calls
.length
== 1); // legend for no selected points
94 assert(calls
.length
== 2); // legend with selected points
96 assert(calls
.length
== 3);
98 assert
.equal(calls
[0].x
, undefined
);
99 assert
.equal(calls
[1].x
, 1);
100 assert
.equal(calls
[1].xHTML
, '1');
101 assert
.equal(calls
[2].x
, undefined
);
103 assert
.equal(calls
[0].series
.length
, 1);
104 assert
.equal(calls
[1].series
.length
, 1);
105 assert
.equal(calls
[2].series
.length
, 1);
107 assert
.equal(calls
[0].series
[0].y
, undefined
);
108 assert
.equal(calls
[1].series
[0].label
, 'Y');
109 assert
.equal(calls
[1].series
[0].labelHTML
, 'Y');
110 assert
.equal(calls
[1].series
[0].y
, 2);
111 assert
.equal(calls
[1].series
[0].yHTML
, '2');
112 assert
.equal(calls
[1].series
[0].isVisible
, true);
113 assert
.equal(calls
[2].series
[0].y
, undefined
);
116 it('should include point drawn where canvas-y is 0', function () {
117 var graph
= document
.getElementById("graph");
119 function callback(data
) {
123 var g
= new Dygraph(document
.getElementById("graph"),
129 legendFormatter
: callback
,
138 assert
.isTrue(data
.series
[0].isVisible
);
139 assert
.notEqual(data
.series
[0].yHTML
, '');