Skip to content

Commit 2f899c0

Browse files
committed
add traceorder tests for multi legends
1 parent 6adf4d9 commit 2f899c0

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

test/jasmine/tests/legend_test.js

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,31 @@ describe('legend defaults', function() {
123123
expect(layoutOut.legend.traceorder).toEqual('reversed');
124124
});
125125

126+
it('should default traceorder to reversed for stack bar charts | multi-legend case', function() {
127+
fullData = allShown([
128+
{type: 'scatter'},
129+
{legend: 'legend2', type: 'bar', visible: 'legendonly'},
130+
{legend: 'legend2', type: 'bar', visible: 'legendonly'},
131+
{legend: 'legend2', type: 'scatter'},
132+
{legend: 'legend3', type: 'scatter'}
133+
]);
134+
135+
layoutOut.legend2 = {};
136+
layoutOut.legend3 = {};
137+
138+
supplyLayoutDefaults(layoutIn, layoutOut, fullData);
139+
expect(layoutOut.legend.traceorder).toEqual('normal');
140+
expect(layoutOut.legend2.traceorder).toEqual('normal');
141+
expect(layoutOut.legend3.traceorder).toEqual('normal');
142+
143+
layoutOut.barmode = 'stack';
144+
145+
supplyLayoutDefaults(layoutIn, layoutOut, fullData);
146+
expect(layoutOut.legend.traceorder).toEqual('normal');
147+
expect(layoutOut.legend2.traceorder).toEqual('reversed');
148+
expect(layoutOut.legend3.traceorder).toEqual('normal');
149+
});
150+
126151
it('should default traceorder to reversed for filled tonext scatter charts', function() {
127152
fullData = allShown([
128153
{type: 'scatter'},
@@ -148,6 +173,30 @@ describe('legend defaults', function() {
148173
expect(layoutOut.legend.traceorder).toEqual('grouped+reversed');
149174
});
150175

176+
it('should default traceorder to grouped when a group is present | multi-legend case', function() {
177+
fullData = allShown([
178+
{type: 'scatter'},
179+
{legend: 'legend2', type: 'scatter', legendgroup: 'group'},
180+
{legend: 'legend2', type: 'scatter'},
181+
{legend: 'legend3', type: 'scatter'}
182+
]);
183+
184+
layoutOut.legend2 = {};
185+
layoutOut.legend3 = {};
186+
187+
supplyLayoutDefaults(layoutIn, layoutOut, fullData);
188+
expect(layoutOut.legend.traceorder).toEqual('normal');
189+
expect(layoutOut.legend2.traceorder).toEqual('grouped');
190+
expect(layoutOut.legend3.traceorder).toEqual('normal');
191+
192+
fullData[1].fill = 'tonextx';
193+
194+
supplyLayoutDefaults(layoutIn, layoutOut, fullData);
195+
expect(layoutOut.legend.traceorder).toEqual('normal');
196+
expect(layoutOut.legend2.traceorder).toEqual('reversed+grouped');
197+
expect(layoutOut.legend3.traceorder).toEqual('normal');
198+
});
199+
151200
it('does not consider invisible traces for traceorder default', function() {
152201
fullData = allShown([
153202
{type: 'bar', visible: false},
@@ -169,6 +218,38 @@ describe('legend defaults', function() {
169218
expect(layoutOut.legend.traceorder).toEqual('normal');
170219
});
171220

221+
it('does not consider invisible traces for traceorder default | multi-legend case', function() {
222+
fullData = allShown([
223+
{type: 'scatter'},
224+
{legend: 'legend2', type: 'bar', visible: false},
225+
{legend: 'legend2', type: 'bar', visible: false},
226+
{legend: 'legend2', type: 'scatter'},
227+
{legend: 'legend3', type: 'scatter'},
228+
]);
229+
230+
layoutOut.legend2 = {};
231+
layoutOut.legend3 = {};
232+
233+
layoutOut.barmode = 'stack';
234+
235+
supplyLayoutDefaults(layoutIn, layoutOut, fullData);
236+
expect(layoutOut.legend.traceorder).toEqual('normal');
237+
expect(layoutOut.legend2.traceorder).toEqual('normal');
238+
expect(layoutOut.legend3.traceorder).toEqual('normal');
239+
240+
fullData = allShown([
241+
{type: 'scatter'},
242+
{legend: 'legend2', type: 'scatter', legendgroup: 'group', visible: false},
243+
{legend: 'legend2', type: 'scatter'},
244+
{legend: 'legend3', type: 'scatter'}
245+
]);
246+
247+
supplyLayoutDefaults(layoutIn, layoutOut, fullData);
248+
expect(layoutOut.legend.traceorder).toEqual('normal');
249+
expect(layoutOut.legend2.traceorder).toEqual('normal');
250+
expect(layoutOut.legend3.traceorder).toEqual('normal');
251+
});
252+
172253
it('should default orientation to vertical', function() {
173254
supplyLayoutDefaults(layoutIn, layoutOut, []);
174255
expect(layoutOut.legend.orientation).toEqual('v');

0 commit comments

Comments
 (0)