Skip to content

Commit 27f51ec

Browse files
committed
Add Jasmine tests for zindex
1 parent c061a92 commit 27f51ec

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed

test/jasmine/tests/cartesian_interact_test.js

+120
Original file line numberDiff line numberDiff line change
@@ -2547,3 +2547,123 @@ describe('Cartesian plots with css transforms', function() {
25472547
});
25482548
});
25492549
});
2550+
2551+
describe('Cartesian taces with zindex', function() {
2552+
var gd;
2553+
2554+
beforeEach(function() {
2555+
gd = createGraphDiv();
2556+
});
2557+
2558+
afterEach(destroyGraphDiv);
2559+
2560+
var data0 = [
2561+
{x: [1, 2], y: [1, 1], type: 'scatter', zindex: 10},
2562+
{x: [1, 2], y: [1, 2], type: 'scatter'},
2563+
{x: [1, 2], y: [1, 3], type: 'scatter', zindex: 5}
2564+
];
2565+
2566+
var data1 = [
2567+
{x: [1, 2], y: [1, 1], type: 'scatter'},
2568+
{x: [1, 2], y: [1, 2], type: 'scatter', zindex: -5},
2569+
{x: [1, 2], y: [1, 3], type: 'scatter', zindex: 10},
2570+
];
2571+
2572+
function fig(data) {
2573+
return {
2574+
data: data,
2575+
layout: {
2576+
width: 400, height: 400
2577+
}
2578+
};
2579+
}
2580+
2581+
function assertZIndices(data, expectedData) {
2582+
for(var i = 0; i < data.length; i++) {
2583+
var zindex = expectedData[i].zindex ? expectedData[i].zindex : 0;
2584+
expect(data[i].zindex).toEqual(zindex);
2585+
}
2586+
}
2587+
2588+
function assertZIndicesSorted(data) {
2589+
var prevZIndex;
2590+
expect(data.length).toBeGreaterThan(0);
2591+
for(var i = 0; i < data.length; i++) {
2592+
var currentZIndex = data[i].__data__.zindex;
2593+
if(prevZIndex !== undefined) {
2594+
expect(currentZIndex).toBeGreaterThanOrEqual(prevZIndex);
2595+
}
2596+
prevZIndex = currentZIndex;
2597+
}
2598+
}
2599+
2600+
it('should be able to update zindex', function(done) {
2601+
Plotly.newPlot(gd, fig(data0))
2602+
.then(function() {
2603+
var data = gd._fullData;
2604+
assertZIndices(data, data0);
2605+
})
2606+
.then(function() {
2607+
return Plotly.react(gd, fig(data1));
2608+
})
2609+
.then(function() {
2610+
var data = gd._fullData;
2611+
assertZIndices(data, data1);
2612+
})
2613+
.then(done, done.fail);
2614+
});
2615+
2616+
it('should display traces in ascending order', function(done) {
2617+
Plotly.newPlot(gd, fig(data0))
2618+
.then(function() {
2619+
var tracesData = d3SelectAll('g[class^="scatterlayer"]');
2620+
assertZIndicesSorted(tracesData[0]);
2621+
})
2622+
.then(function() {
2623+
return Plotly.react(gd, fig(data1));
2624+
})
2625+
.then(function() {
2626+
var tracesData = d3SelectAll('g[class^="scatterlayer"]');
2627+
assertZIndicesSorted(tracesData[0]);
2628+
})
2629+
.then(done, done.fail);
2630+
});
2631+
2632+
it('should display traces in ascending zindex order after restyle', function(done) {
2633+
Plotly.newPlot(gd, fig(data0))
2634+
.then(function() {
2635+
var tracesData = d3SelectAll('g[class^="scatterlayer"]');
2636+
var data = gd._fullData;
2637+
assertZIndices(data, data0);
2638+
assertZIndicesSorted(tracesData[0]);
2639+
})
2640+
.then(function() {
2641+
return Plotly.restyle(gd, 'type', 'bar');
2642+
})
2643+
.then(function() {
2644+
var tracesData = d3SelectAll('g[class^="barlayer"]');
2645+
var data = gd._fullData;
2646+
assertZIndices(data, data0);
2647+
assertZIndicesSorted(tracesData[0]);
2648+
})
2649+
.then(function() {
2650+
return Plotly.react(gd, fig(data1));
2651+
})
2652+
.then(function() {
2653+
var tracesData = d3SelectAll('g[class^="scatterlayer"]');
2654+
var data = gd._fullData;
2655+
assertZIndices(data, data1);
2656+
assertZIndicesSorted(tracesData[0]);
2657+
})
2658+
.then(function() {
2659+
return Plotly.restyle(gd, {type: 'bar'});
2660+
})
2661+
.then(function() {
2662+
var tracesData = d3SelectAll('g[class^="barlayer"]');
2663+
var data = gd._fullData;
2664+
assertZIndices(data, data1);
2665+
assertZIndicesSorted(tracesData[0]);
2666+
})
2667+
.then(done, done.fail);
2668+
});
2669+
});

0 commit comments

Comments
 (0)