|
1 | 1 | var Plotly = require('@lib');
|
2 | 2 | var Lib = require('@src/lib');
|
3 | 3 |
|
| 4 | +var d3 = require('d3'); |
4 | 5 | var createGraphDiv = require('../assets/create_graph_div');
|
5 | 6 | var destroyGraphDiv = require('../assets/destroy_graph_div');
|
6 | 7 | var failTest = require('../assets/fail_test');
|
7 | 8 | var mouseEvent = require('../assets/mouse_event');
|
| 9 | +var readPixel = require('../assets/read_pixel'); |
8 | 10 |
|
9 | 11 | var customAssertions = require('../assets/custom_assertions');
|
10 | 12 | var assertHoverLabelContent = customAssertions.assertHoverLabelContent;
|
@@ -102,3 +104,69 @@ describe('Test scatterpolargl hover:', function() {
|
102 | 104 | });
|
103 | 105 | });
|
104 | 106 | });
|
| 107 | + |
| 108 | +describe('Test scatterpolargl interactions:', function() { |
| 109 | + var gd; |
| 110 | + |
| 111 | + afterEach(function() { |
| 112 | + Plotly.purge(gd); |
| 113 | + destroyGraphDiv(); |
| 114 | + }); |
| 115 | + |
| 116 | + function countCanvases() { |
| 117 | + return d3.selectAll('canvas').size(); |
| 118 | + } |
| 119 | + |
| 120 | + function totalPixels() { |
| 121 | + return readPixel(gd.querySelector('.gl-canvas-context'), 0, 0, 400, 400) |
| 122 | + .reduce(function(acc, v) { return acc + v; }, 0); |
| 123 | + } |
| 124 | + |
| 125 | + it('@gl should be able to toggle from svg to gl', function(done) { |
| 126 | + gd = createGraphDiv(); |
| 127 | + |
| 128 | + var scene; |
| 129 | + |
| 130 | + Plotly.plot(gd, [{ |
| 131 | + type: 'scatterpolar', |
| 132 | + r: [1, 2, 1], |
| 133 | + }], { |
| 134 | + width: 400, |
| 135 | + height: 400 |
| 136 | + }) |
| 137 | + .then(function() { |
| 138 | + expect(countCanvases()).toBe(0); |
| 139 | + expect(d3.selectAll('.scatterlayer > .trace').size()).toBe(1); |
| 140 | + |
| 141 | + return Plotly.restyle(gd, 'type', 'scatterpolargl'); |
| 142 | + }) |
| 143 | + .then(function() { |
| 144 | + expect(countCanvases()).toBe(3); |
| 145 | + expect(totalPixels()).not.toBe(0); |
| 146 | + expect(d3.selectAll('.scatterlayer > .trace').size()).toBe(0); |
| 147 | + |
| 148 | + scene = gd._fullLayout.polar._subplot._scene; |
| 149 | + spyOn(scene, 'destroy').and.callThrough(); |
| 150 | + |
| 151 | + return Plotly.restyle(gd, 'type', 'scatterpolar'); |
| 152 | + }) |
| 153 | + .then(function() { |
| 154 | + expect(countCanvases()).toBe(0); |
| 155 | + expect(scene.destroy).toHaveBeenCalledTimes(1); |
| 156 | + expect(gd._fullLayout.polar._subplot._scene).toBe(null); |
| 157 | + expect(d3.selectAll('.scatterlayer > .trace').size()).toBe(1); |
| 158 | + |
| 159 | + return Plotly.restyle(gd, 'type', 'scatterpolargl'); |
| 160 | + }) |
| 161 | + .then(function() { |
| 162 | + expect(countCanvases()).toBe(3); |
| 163 | + // this here was failing before |
| 164 | + // https://github.com/plotly/plotly.js/issues/3094 |
| 165 | + // got fixed |
| 166 | + expect(totalPixels()).not.toBe(0); |
| 167 | + expect(d3.selectAll('.scatterlayer > .trace').size()).toBe(0); |
| 168 | + }) |
| 169 | + .catch(failTest) |
| 170 | + .then(done); |
| 171 | + }); |
| 172 | +}); |
0 commit comments