@@ -88,7 +88,7 @@ describe('Test gl plot interactions', function() {
88
88
89
89
describe ( 'scatter3d hover' , function ( ) {
90
90
91
- var node , ptData ;
91
+ var ptData ;
92
92
93
93
beforeEach ( function ( done ) {
94
94
gd . on ( 'plotly_hover' , function ( eventData ) {
@@ -100,27 +100,70 @@ describe('Test gl plot interactions', function() {
100
100
delay ( done ) ;
101
101
} ) ;
102
102
103
- it ( 'should have' , function ( ) {
104
- node = d3 . selectAll ( 'g.hovertext' ) ;
105
- expect ( node . size ( ) ) . toEqual ( 1 , 'one hover text group' ) ;
103
+ function assertHoverText ( xLabel , yLabel , zLabel ) {
104
+ var node = d3 . selectAll ( 'g.hovertext' ) ;
105
+ expect ( node . size ( ) ) . toEqual ( 1 , 'hover text group' ) ;
106
+
107
+ var tspan = d3 . selectAll ( 'g.hovertext' ) . selectAll ( 'tspan' ) [ 0 ] ;
108
+ expect ( tspan [ 0 ] . innerHTML ) . toEqual ( xLabel , 'x val' ) ;
109
+ expect ( tspan [ 1 ] . innerHTML ) . toEqual ( yLabel , 'y val' ) ;
110
+ expect ( tspan [ 2 ] . innerHTML ) . toEqual ( zLabel , 'z val' ) ;
111
+ }
112
+
113
+ it ( 'makes the right hover text and point data' , function ( done ) {
114
+
115
+ function hover ( ) {
116
+ mouseEventScatter3d ( 'mouseover' ) ;
117
+ return delay ;
118
+ }
106
119
107
- node = d3 . selectAll ( 'g.hovertext' ) . selectAll ( 'tspan' ) [ 0 ] ;
108
- expect ( node [ 0 ] . innerHTML ) . toEqual ( 'x: 140.72' , 'x val on hover' ) ;
109
- expect ( node [ 1 ] . innerHTML ) . toEqual ( 'y: −96.97' , 'y val on hover' ) ;
110
- expect ( node [ 2 ] . innerHTML ) . toEqual ( 'z: −96.97' , 'z val on hover' ) ;
120
+ assertHoverText ( 'x: 140.72' , 'y: −96.97' , 'z: −96.97' ) ;
111
121
112
122
expect ( Object . keys ( ptData ) ) . toEqual ( [
113
123
'x' , 'y' , 'z' ,
114
124
'data' , 'fullData' , 'curveNumber' , 'pointNumber'
115
125
] , 'correct hover data fields' ) ;
116
126
117
- expect ( ptData . x ) . toBe ( '140.72' , 'x val hover data' ) ;
118
- expect ( ptData . y ) . toBe ( '−96.97' , 'y val hover data' ) ;
119
- expect ( ptData . z ) . toEqual ( '−96.97' , 'z val hover data' ) ;
120
- expect ( ptData . curveNumber ) . toEqual ( 0 , 'curveNumber hover data' ) ;
121
- expect ( ptData . pointNumber ) . toEqual ( 2 , 'pointNumber hover data' ) ;
122
- } ) ;
127
+ expect ( ptData . x ) . toBe ( '140.72' , 'x val' ) ;
128
+ expect ( ptData . y ) . toBe ( '−96.97' , 'y val' ) ;
129
+ expect ( ptData . z ) . toEqual ( '−96.97' , 'z val' ) ;
130
+ expect ( ptData . curveNumber ) . toEqual ( 0 , 'curveNumber' ) ;
131
+ expect ( ptData . pointNumber ) . toEqual ( 2 , 'pointNumber' ) ;
132
+
133
+ Plotly . restyle ( gd , {
134
+ x : [ [ '2016-01-11' , '2016-01-12' , '2017-01-01' , '2017-02' ] ]
135
+ } )
136
+ . then ( hover )
137
+ . then ( function ( ) {
138
+ assertHoverText ( 'x: Jan 1, 2017' , 'y: −96.97' , 'z: −96.97' ) ;
139
+
140
+ return Plotly . restyle ( gd , {
141
+ x : [ [ new Date ( 2017 , 2 , 1 ) , new Date ( 2017 , 2 , 2 ) , new Date ( 2017 , 2 , 3 ) , new Date ( 2017 , 2 , 4 ) ] ]
142
+ } ) ;
143
+ } )
144
+ . then ( hover )
145
+ . then ( function ( ) {
146
+ assertHoverText ( 'x: Mar 3, 2017' , 'y: −96.97' , 'z: −96.97' ) ;
147
+
148
+ return Plotly . update ( gd , {
149
+ y : [ [ 'a' , 'b' , 'c' , 'd' ] ] ,
150
+ z : [ [ 10 , 1e3 , 1e5 , 1e10 ] ]
151
+ } , {
152
+ 'scene.zaxis.type' : 'log'
153
+ } ) ;
154
+ } )
155
+ . then ( hover )
156
+ . then ( function ( ) {
157
+ assertHoverText ( 'x: Mar 3, 2017' , 'y: c' , 'z: 100k' ) ;
123
158
159
+ return Plotly . relayout ( gd , 'scene.xaxis.calendar' , 'chinese' ) ;
160
+ } )
161
+ . then ( hover )
162
+ . then ( function ( ) {
163
+ assertHoverText ( 'x: 二 6, 2017' , 'y: c' , 'z: 100k' ) ;
164
+ } )
165
+ . then ( done ) ;
166
+ } ) ;
124
167
} ) ;
125
168
126
169
describe ( 'scatter3d click events' , function ( ) {
0 commit comments