|
| 1 | +var Plotly = require('@lib'); |
| 2 | +var Lib = require('@src/lib'); |
| 3 | + |
| 4 | +var supplyAllDefaults = require('../assets/supply_defaults'); |
| 5 | +var createGraphDiv = require('../assets/create_graph_div'); |
| 6 | +var destroyGraphDiv = require('../assets/destroy_graph_div'); |
| 7 | +var failTest = require('../assets/fail_test'); |
| 8 | + |
| 9 | +describe('Test cone defaults', function() { |
| 10 | + var gd; |
| 11 | + |
| 12 | + function makeGD() { |
| 13 | + return { |
| 14 | + data: [{ |
| 15 | + type: 'cone', |
| 16 | + x: [1, 2], |
| 17 | + y: [1, 2], |
| 18 | + z: [1, 2], |
| 19 | + u: [1, 2], |
| 20 | + v: [1, 2], |
| 21 | + w: [1, 2] |
| 22 | + }], |
| 23 | + layout: {} |
| 24 | + }; |
| 25 | + } |
| 26 | + |
| 27 | + it('should set `visible: false` for traces missing x,y,z,u,v,w arrays', function() { |
| 28 | + var keysToDelete = ['x', 'y', 'z', 'u', 'v', 'w', '']; |
| 29 | + |
| 30 | + keysToDelete.forEach(function(k) { |
| 31 | + gd = makeGD(); |
| 32 | + delete gd.data[0][k]; |
| 33 | + |
| 34 | + supplyAllDefaults(gd); |
| 35 | + expect(gd._fullData[0].visible).toBe(!k, 'missing array ' + k); |
| 36 | + }); |
| 37 | + }); |
| 38 | + |
| 39 | + it('should set `visible: false` for traces empty x,y,z,u,v,w arrays', function() { |
| 40 | + var keysToEmpty = ['x', 'y', 'z', 'u', 'v', 'w']; |
| 41 | + |
| 42 | + keysToEmpty.forEach(function(k) { |
| 43 | + gd = makeGD(); |
| 44 | + gd.data[0][k] = []; |
| 45 | + |
| 46 | + supplyAllDefaults(gd); |
| 47 | + expect(gd._fullData[0].visible).toBe(!k, 'empty array ' + k); |
| 48 | + }); |
| 49 | + }); |
| 50 | +}); |
| 51 | + |
| 52 | +describe('@gl Test cone interactions', function() { |
| 53 | + var gd; |
| 54 | + |
| 55 | + beforeEach(function() { |
| 56 | + gd = createGraphDiv(); |
| 57 | + }); |
| 58 | + |
| 59 | + afterEach(function() { |
| 60 | + Plotly.purge(gd); |
| 61 | + destroyGraphDiv(); |
| 62 | + }); |
| 63 | + |
| 64 | + it('should add/clear gl objects correctly', function(done) { |
| 65 | + var fig = Lib.extendDeep({}, require('@mocks/gl3d_cone-simple.json')); |
| 66 | + // put traces on same subplot |
| 67 | + delete fig.data[1].scene; |
| 68 | + |
| 69 | + Plotly.plot(gd, fig).then(function() { |
| 70 | + var scene = gd._fullLayout.scene._scene; |
| 71 | + var objs = scene.glplot.objects; |
| 72 | + |
| 73 | + expect(objs.length).toBe(4); |
| 74 | + |
| 75 | + return Plotly.deleteTraces(gd, [0]); |
| 76 | + }) |
| 77 | + .then(function() { |
| 78 | + var scene = gd._fullLayout.scene._scene; |
| 79 | + var objs = scene.glplot.objects; |
| 80 | + |
| 81 | + expect(objs.length).toBe(2); |
| 82 | + |
| 83 | + return Plotly.deleteTraces(gd, [0]); |
| 84 | + }) |
| 85 | + .then(function() { |
| 86 | + var scene = gd._fullLayout.scene; |
| 87 | + |
| 88 | + expect(scene).toBeUndefined(); |
| 89 | + }) |
| 90 | + .catch(failTest) |
| 91 | + .then(done); |
| 92 | + }); |
| 93 | +}); |
0 commit comments