@@ -16,11 +16,23 @@ describe('[range selector suite]', function() {
1616 describe ( 'defaults:' , function ( ) {
1717 var supplyLayoutDefaults = RangeSelector . supplyLayoutDefaults ;
1818
19+ function supply ( containerIn , containerOut ) {
20+ containerOut . domain = [ 0 , 1 ] ;
21+
22+ var layout = {
23+ yaxis : { domain : [ 0 , 1 ] }
24+ } ;
25+
26+ var counterAxes = [ 'yaxis' ] ;
27+
28+ supplyLayoutDefaults ( containerIn , containerOut , layout , counterAxes ) ;
29+ }
30+
1931 it ( 'should set \'visible\' to false when no buttons are present' , function ( ) {
2032 var containerIn = { } ;
2133 var containerOut = { } ;
2234
23- supplyLayoutDefaults ( containerIn , containerOut , { } ) ;
35+ supply ( containerIn , containerOut ) ;
2436
2537 expect ( containerOut . rangeselector )
2638 . toEqual ( {
@@ -37,7 +49,7 @@ describe('[range selector suite]', function() {
3749 } ;
3850 var containerOut = { } ;
3951
40- supplyLayoutDefaults ( containerIn , containerOut , { } ) ;
52+ supply ( containerIn , containerOut ) ;
4153
4254 expect ( containerIn . rangeselector . buttons ) . toEqual ( [ { } ] ) ;
4355 expect ( containerOut . rangeselector . buttons ) . toEqual ( [ {
@@ -60,7 +72,7 @@ describe('[range selector suite]', function() {
6072 } ;
6173 var containerOut = { } ;
6274
63- supplyLayoutDefaults ( containerIn , containerOut , { } ) ;
75+ supply ( containerIn , containerOut , { } , [ ] ) ;
6476
6577 expect ( containerOut . rangeselector . visible ) . toBe ( true ) ;
6678 expect ( containerOut . rangeselector . buttons ) . toEqual ( [
@@ -80,14 +92,67 @@ describe('[range selector suite]', function() {
8092 } ;
8193 var containerOut = { } ;
8294
83- supplyLayoutDefaults ( containerIn , containerOut , { } ) ;
95+ supply ( containerIn , containerOut , { } , [ ] ) ;
8496
8597 expect ( containerOut . rangeselector . buttons ) . toEqual ( [ {
8698 step : 'all' ,
8799 label : 'full range'
88100 } ] ) ;
89101 } ) ;
90102
103+ it ( 'should use axis and counter axis to determine \'x\' and \'y\' defaults (case 1 y)' , function ( ) {
104+ var containerIn = {
105+ rangeselector : { buttons : [ { } ] }
106+ } ;
107+ var containerOut = {
108+ _id : 'x' ,
109+ domain : [ 0 , 0.5 ]
110+ } ;
111+ var layout = {
112+ xaxis : containerIn ,
113+ yaxis : {
114+ anchor : 'x' ,
115+ domain : [ 0 , 0.45 ]
116+ }
117+ } ;
118+ var counterAxes = [ 'yaxis' ] ;
119+
120+ supplyLayoutDefaults ( containerIn , containerOut , layout , counterAxes ) ;
121+
122+ expect ( containerOut . rangeselector . x ) . toEqual ( 0 ) ;
123+ expect ( containerOut . rangeselector . y ) . toBeCloseTo ( 0.47 ) ;
124+ } ) ;
125+
126+ it ( 'should use axis and counter axis to determine \'x\' and \'y\' defaults (case multi y)' , function ( ) {
127+ var containerIn = {
128+ rangeselector : { buttons : [ { } ] }
129+ } ;
130+ var containerOut = {
131+ _id : 'x' ,
132+ domain : [ 0.5 , 1 ]
133+ } ;
134+ var layout = {
135+ xaxis : containerIn ,
136+ yaxis : {
137+ anchor : 'x' ,
138+ domain : [ 0 , 0.25 ]
139+ } ,
140+ yaxis2 : {
141+ anchor : 'x' ,
142+ domain : [ 0.3 , 0.55 ]
143+ } ,
144+ yaxis3 : {
145+ anchor : 'x' ,
146+ domain : [ 0.6 , 0.85 ]
147+ }
148+ } ;
149+ var counterAxes = [ 'yaxis' , 'yaxis2' , 'yaxis3' ] ;
150+
151+ supplyLayoutDefaults ( containerIn , containerOut , layout , counterAxes ) ;
152+
153+ expect ( containerOut . rangeselector . x ) . toEqual ( 0.5 ) ;
154+ expect ( containerOut . rangeselector . y ) . toBeCloseTo ( 0.87 ) ;
155+ } ) ;
91156 } ) ;
92157
93158 describe ( 'getUpdateObject:' , function ( ) {
@@ -331,13 +396,12 @@ describe('[range selector suite]', function() {
331396 expect ( d3 . selectAll ( query ) . size ( ) ) . toEqual ( cnt ) ;
332397 }
333398
334- it ( 'should display ' , function ( ) {
399+ it ( 'should display the correct nodes ' , function ( ) {
335400 assertNodeCount ( '.rangeselector' , 1 ) ;
336401 assertNodeCount ( '.button' , mockCopy . layout . xaxis . rangeselector . buttons . length ) ;
337402 } ) ;
338403
339404 it ( 'should be able to be removed by `relayout`' , function ( done ) {
340-
341405 Plotly . relayout ( gd , 'xaxis.rangeselector.visible' , false ) . then ( function ( ) {
342406 assertNodeCount ( '.rangeselector' , 0 ) ;
343407 assertNodeCount ( '.button' , 0 ) ;
0 commit comments