@@ -185,7 +185,7 @@ describe('ModeBar', function() {
185185 [ 'toImage' , 'sendDataToCloud' ] ,
186186 [ 'zoom2d' , 'pan2d' ] ,
187187 [ 'zoomIn2d' , 'zoomOut2d' , 'autoScale2d' , 'resetScale2d' ] ,
188- [ 'hoverClosestCartesian' , 'hoverCompareCartesian' ]
188+ [ 'toggleSpikelines' , ' hoverClosestCartesian', 'hoverCompareCartesian' ]
189189 ] ) ;
190190
191191 var gd = getMockGraphInfo ( ) ;
@@ -203,7 +203,7 @@ describe('ModeBar', function() {
203203 [ 'toImage' , 'sendDataToCloud' ] ,
204204 [ 'zoom2d' , 'pan2d' , 'select2d' , 'lasso2d' ] ,
205205 [ 'zoomIn2d' , 'zoomOut2d' , 'autoScale2d' , 'resetScale2d' ] ,
206- [ 'hoverClosestCartesian' , 'hoverCompareCartesian' ]
206+ [ 'toggleSpikelines' , ' hoverClosestCartesian', 'hoverCompareCartesian' ]
207207 ] ) ;
208208
209209 var gd = getMockGraphInfo ( ) ;
@@ -225,7 +225,7 @@ describe('ModeBar', function() {
225225 it ( 'creates mode bar (cartesian fixed-axes version)' , function ( ) {
226226 var buttons = getButtons ( [
227227 [ 'toImage' , 'sendDataToCloud' ] ,
228- [ 'hoverClosestCartesian' , 'hoverCompareCartesian' ]
228+ [ 'toggleSpikelines' , ' hoverClosestCartesian', 'hoverCompareCartesian' ]
229229 ] ) ;
230230
231231 var gd = getMockGraphInfo ( ) ;
@@ -412,7 +412,7 @@ describe('ModeBar', function() {
412412 var buttons = getButtons ( [
413413 [ 'toImage' , 'sendDataToCloud' ] ,
414414 [ 'zoom2d' , 'pan2d' ] ,
415- [ 'hoverClosestCartesian' , 'hoverCompareCartesian' ]
415+ [ 'toggleSpikelines' , ' hoverClosestCartesian', 'hoverCompareCartesian' ]
416416 ] ) ;
417417
418418 var gd = getMockGraphInfo ( ) ;
@@ -544,7 +544,7 @@ describe('ModeBar', function() {
544544
545545 var modeBar = gd . _fullLayout . _modeBar ;
546546 expect ( countGroups ( modeBar ) ) . toEqual ( 6 ) ;
547- expect ( countButtons ( modeBar ) ) . toEqual ( 10 ) ;
547+ expect ( countButtons ( modeBar ) ) . toEqual ( 11 ) ;
548548 } ) ;
549549
550550 it ( 'sets up buttons with modeBarButtonsToAdd and modeBarButtonToRemove (2)' , function ( ) {
@@ -564,7 +564,7 @@ describe('ModeBar', function() {
564564
565565 var modeBar = gd . _fullLayout . _modeBar ;
566566 expect ( countGroups ( modeBar ) ) . toEqual ( 7 ) ;
567- expect ( countButtons ( modeBar ) ) . toEqual ( 12 ) ;
567+ expect ( countButtons ( modeBar ) ) . toEqual ( 13 ) ;
568568 } ) ;
569569
570570 it ( 'sets up buttons with fully custom modeBarButtons' , function ( ) {
@@ -612,7 +612,7 @@ describe('ModeBar', function() {
612612 } ) ;
613613
614614 describe ( 'modebar on clicks' , function ( ) {
615- var gd , modeBar ;
615+ var gd , modeBar , buttonClosest , buttonCompare , buttonToggle , hovermodeButtons ;
616616
617617 beforeAll ( function ( ) {
618618 jasmine . addMatchers ( customMatchers ) ;
@@ -685,6 +685,10 @@ describe('ModeBar', function() {
685685 gd = createGraphDiv ( ) ;
686686 Plotly . plot ( gd , mockData , mockLayout ) . then ( function ( ) {
687687 modeBar = gd . _fullLayout . _modeBar ;
688+ buttonToggle = selectButton ( modeBar , 'toggleSpikelines' ) ;
689+ buttonCompare = selectButton ( modeBar , 'hoverCompareCartesian' ) ;
690+ buttonClosest = selectButton ( modeBar , 'hoverClosestCartesian' ) ;
691+ hovermodeButtons = [ buttonCompare , buttonClosest ] ;
688692 done ( ) ;
689693 } ) ;
690694 } ) ;
@@ -758,21 +762,53 @@ describe('ModeBar', function() {
758762 } ) ;
759763
760764 describe ( 'buttons hoverCompareCartesian and hoverClosestCartesian ' , function ( ) {
761- it ( 'should update layout hovermode' , function ( ) {
762- var buttonCompare = selectButton ( modeBar , 'hoverCompareCartesian' ) ,
763- buttonClosest = selectButton ( modeBar , 'hoverClosestCartesian' ) ,
764- buttons = [ buttonCompare , buttonClosest ] ;
765765
766+ it ( 'should update layout hovermode' , function ( ) {
766767 expect ( gd . _fullLayout . hovermode ) . toBe ( 'x' ) ;
767- assertActive ( buttons , buttonCompare ) ;
768+ assertActive ( hovermodeButtons , buttonCompare ) ;
768769
769770 buttonClosest . click ( ) ;
770771 expect ( gd . _fullLayout . hovermode ) . toBe ( 'closest' ) ;
771- assertActive ( buttons , buttonClosest ) ;
772+ assertActive ( hovermodeButtons , buttonClosest ) ;
772773
773774 buttonCompare . click ( ) ;
774775 expect ( gd . _fullLayout . hovermode ) . toBe ( 'x' ) ;
775- assertActive ( buttons , buttonCompare ) ;
776+ assertActive ( hovermodeButtons , buttonCompare ) ;
777+ } ) ;
778+ } ) ;
779+
780+ describe ( 'button toggleSpikelines' , function ( ) {
781+ it ( 'should update layout hovermode' , function ( ) {
782+ expect ( gd . _fullLayout . hovermode ) . toBe ( 'x' ) ;
783+ assertActive ( hovermodeButtons , buttonCompare ) ;
784+
785+ buttonToggle . click ( ) ;
786+ expect ( gd . _fullLayout . hovermode ) . toBe ( 'closest' ) ;
787+ assertActive ( hovermodeButtons , buttonClosest ) ;
788+ } ) ;
789+ it ( 'should makes spikelines visible' , function ( ) {
790+ buttonToggle . click ( ) ;
791+ expect ( gd . _fullLayout . _cartesianSpikesEnabled ) . toBe ( 'on' ) ;
792+
793+ buttonToggle . click ( ) ;
794+ expect ( gd . _fullLayout . _cartesianSpikesEnabled ) . toBe ( 'off' ) ;
795+ } ) ;
796+ it ( 'should become disabled when hovermode is switched off closest' , function ( ) {
797+ buttonToggle . click ( ) ;
798+ expect ( gd . _fullLayout . _cartesianSpikesEnabled ) . toBe ( 'on' ) ;
799+
800+ buttonCompare . click ( ) ;
801+ expect ( gd . _fullLayout . _cartesianSpikesEnabled ) . toBe ( 'off' ) ;
802+ } ) ;
803+ it ( 'should be re-enabled when hovermode is set to closest if it was previously on' , function ( ) {
804+ buttonToggle . click ( ) ;
805+ expect ( gd . _fullLayout . _cartesianSpikesEnabled ) . toBe ( 'on' ) ;
806+
807+ buttonCompare . click ( ) ;
808+ expect ( gd . _fullLayout . _cartesianSpikesEnabled ) . toBe ( 'off' ) ;
809+
810+ buttonClosest . click ( ) ;
811+ expect ( gd . _fullLayout . _cartesianSpikesEnabled ) . toBe ( 'on' ) ;
776812 } ) ;
777813 } ) ;
778814 } ) ;
0 commit comments