@@ -2824,3 +2824,84 @@ describe('plotly_relayouting', function() {
2824
2824
} ) ;
2825
2825
} ) ;
2826
2826
} ) ;
2827
+
2828
+
2829
+ describe ( 'minscale and maxscale' , function ( ) {
2830
+ function scroll ( pos , delta ) {
2831
+ return new Promise ( function ( resolve ) {
2832
+ mouseEvent ( 'mousemove' , pos [ 0 ] , pos [ 1 ] ) ;
2833
+ mouseEvent ( 'scroll' , pos [ 0 ] , pos [ 1 ] , { deltaX : delta [ 0 ] , deltaY : delta [ 1 ] } ) ;
2834
+ setTimeout ( resolve , 100 ) ;
2835
+ } ) ;
2836
+ }
2837
+
2838
+ var gd ;
2839
+
2840
+ beforeEach ( function ( ) { gd = createGraphDiv ( ) ; } ) ;
2841
+
2842
+ afterEach ( destroyGraphDiv ) ;
2843
+
2844
+ var allTests = [
2845
+ {
2846
+ name : 'non-clipped' ,
2847
+ mock : require ( '../../image/mocks/geo_winkel-tripel' ) ,
2848
+ initialScale : 101.85972947889438
2849
+ } ,
2850
+ {
2851
+ name : 'clipped' ,
2852
+ mock : require ( '../../image/mocks/geo_orthographic' ) ,
2853
+ initialScale : 160.0000000243694 ,
2854
+ } ,
2855
+ {
2856
+ name : 'scoped' ,
2857
+ mock : require ( '../../image/mocks/geo_europe-bubbles' ) ,
2858
+ initialScale : 294.0932287044594
2859
+ }
2860
+ ] ;
2861
+
2862
+ allTests . forEach ( function ( test ) {
2863
+ it ( test . name + ' maxscale' , function ( done ) {
2864
+ var initialScale = test . initialScale ;
2865
+
2866
+ var fig = Lib . extendDeep ( { } , test . mock ) ;
2867
+ fig . layout . width = 700 ;
2868
+ fig . layout . height = 500 ;
2869
+ fig . layout . dragmode = 'pan' ;
2870
+ if ( ! fig . layout . geo . projection ) fig . layout . geo . projection = { } ;
2871
+ fig . layout . geo . projection . maxscale = 1.1 ;
2872
+
2873
+ Plotly . newPlot ( gd , fig )
2874
+ . then ( function ( ) {
2875
+ expect ( gd . _fullLayout . geo . _subplot . projection . scale ( ) ) . toEqual ( initialScale ) ;
2876
+
2877
+ return scroll ( [ 200 , 250 ] , [ - 200 , - 200 ] ) ;
2878
+ } )
2879
+ . then ( function ( ) {
2880
+ expect ( gd . _fullLayout . geo . _subplot . projection . scale ( ) ) . toEqual ( 1.1 * initialScale ) ;
2881
+ } )
2882
+ . then ( done , done . fail ) ;
2883
+ } ) ;
2884
+
2885
+ it ( test . name + ' minscale' , function ( done ) {
2886
+ var initialScale = test . initialScale ;
2887
+
2888
+ var fig = Lib . extendDeep ( { } , test . mock ) ;
2889
+ fig . layout . width = 700 ;
2890
+ fig . layout . height = 500 ;
2891
+ fig . layout . dragmode = 'pan' ;
2892
+ if ( ! fig . layout . geo . projection ) fig . layout . geo . projection = { } ;
2893
+ fig . layout . geo . projection . minscale = 0.9 ;
2894
+
2895
+ Plotly . newPlot ( gd , fig )
2896
+ . then ( function ( ) {
2897
+ expect ( gd . _fullLayout . geo . _subplot . projection . scale ( ) ) . toEqual ( initialScale ) ;
2898
+
2899
+ return scroll ( [ 200 , 250 ] , [ 200 , 200 ] ) ;
2900
+ } )
2901
+ . then ( function ( ) {
2902
+ expect ( gd . _fullLayout . geo . _subplot . projection . scale ( ) ) . toEqual ( 0.9 * initialScale ) ;
2903
+ } )
2904
+ . then ( done , done . fail ) ;
2905
+ } ) ;
2906
+ } ) ;
2907
+ } ) ;
0 commit comments