11var Sliders = require ( '@src/components/sliders' ) ;
2- // var constants = require('@src/components/sliders/constants');
2+ var constants = require ( '@src/components/sliders/constants' ) ;
33
4- // var d3 = require('d3');
5- // var Plotly = require('@lib');
6- // var Lib = require('@src/lib');
7- // var createGraphDiv = require('../assets/create_graph_div');
8- // var destroyGraphDiv = require('../assets/destroy_graph_div');
4+ var d3 = require ( 'd3' ) ;
5+ var Plotly = require ( '@lib' ) ;
6+ var Lib = require ( '@src/lib' ) ;
7+ var createGraphDiv = require ( '../assets/create_graph_div' ) ;
8+ var destroyGraphDiv = require ( '../assets/destroy_graph_div' ) ;
9+ var fail = require ( '../assets/fail_test' ) ;
910
1011describe ( 'sliders defaults' , function ( ) {
1112 'use strict' ;
@@ -56,6 +57,39 @@ describe('sliders defaults', function() {
5657 expect ( layoutOut . sliders [ 2 ] . active ) . toBeUndefined ( ) ;
5758 } ) ;
5859
60+ it ( 'should set the default values equal to the labels' , function ( ) {
61+ layoutIn . sliders = [ {
62+ steps : [ {
63+ method : 'relayout' , args : [ ] ,
64+ label : 'Label #1' ,
65+ value : 'label-1'
66+ } , {
67+ method : 'update' , args : [ ] ,
68+ label : 'Label #2'
69+ } , {
70+ method : 'animate' , args : [ ] ,
71+ value : 'lacks-label'
72+ } ]
73+ } ] ;
74+
75+ supply ( layoutIn , layoutOut ) ;
76+
77+ expect ( layoutOut . sliders [ 0 ] . steps . length ) . toEqual ( 3 ) ;
78+ expect ( layoutOut . sliders [ 0 ] . steps ) . toEqual ( [ {
79+ method : 'relayout' , args : [ ] ,
80+ label : 'Label #1' ,
81+ value : 'label-1'
82+ } , {
83+ method : 'update' , args : [ ] ,
84+ label : 'Label #2' ,
85+ value : 'Label #2'
86+ } , {
87+ method : 'animate' , args : [ ] ,
88+ label : 'step-2' ,
89+ value : 'lacks-label'
90+ } ] ) ;
91+ } ) ;
92+
5993 it ( 'should skip over non-object steps' , function ( ) {
6094 layoutIn . sliders = [ {
6195 steps : [
@@ -74,12 +108,12 @@ describe('sliders defaults', function() {
74108 expect ( layoutOut . sliders [ 0 ] . steps [ 0 ] ) . toEqual ( {
75109 method : 'relayout' ,
76110 args : [ 'title' , 'Hello World' ] ,
77- label : '' ,
78- _index : 1
111+ label : 'step-1 ' ,
112+ value : 'step-1' ,
79113 } ) ;
80114 } ) ;
81115
82- it ( 'should skip over steps with array \'args\' field' , function ( ) {
116+ it ( 'should skip over steps with non- array \'args\' field' , function ( ) {
83117 layoutIn . sliders = [ {
84118 steps : [ {
85119 method : 'restyle' ,
@@ -98,8 +132,8 @@ describe('sliders defaults', function() {
98132 expect ( layoutOut . sliders [ 0 ] . steps [ 0 ] ) . toEqual ( {
99133 method : 'relayout' ,
100134 args : [ 'title' , 'Hello World' ] ,
101- label : '' ,
102- _index : 1
135+ label : 'step-1 ' ,
136+ value : 'step-1' ,
103137 } ) ;
104138 } ) ;
105139
@@ -147,3 +181,76 @@ describe('sliders defaults', function() {
147181 expect ( layoutOut . sliders [ 1 ] . bgcolor ) . toEqual ( 'red' ) ;
148182 } ) ;
149183} ) ;
184+
185+ describe ( 'update sliders interactions' , function ( ) {
186+ 'use strict' ;
187+
188+ var mock = require ( '@mocks/sliders.json' ) ;
189+
190+ var gd ;
191+
192+ beforeEach ( function ( done ) {
193+ gd = createGraphDiv ( ) ;
194+
195+ var mockCopy = Lib . extendDeep ( { } , mock ) ;
196+
197+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout ) . then ( done ) ;
198+ } ) ;
199+
200+ afterEach ( function ( ) {
201+ Plotly . purge ( gd ) ;
202+ destroyGraphDiv ( ) ;
203+ } ) ;
204+
205+ it ( 'should draw only visible sliders' , function ( done ) {
206+ expect ( gd . _fullLayout . _pushmargin [ 'slider-0' ] ) . toBeDefined ( ) ;
207+ expect ( gd . _fullLayout . _pushmargin [ 'slider-1' ] ) . toBeDefined ( ) ;
208+
209+ Plotly . relayout ( gd , 'sliders[0].visible' , false ) . then ( function ( ) {
210+ assertNodeCount ( '.' + constants . groupClassName , 1 ) ;
211+ expect ( gd . _fullLayout . _pushmargin [ 'slider-0' ] ) . toBeUndefined ( ) ;
212+ expect ( gd . _fullLayout . _pushmargin [ 'slider-1' ] ) . toBeDefined ( ) ;
213+
214+ return Plotly . relayout ( gd , 'sliders[1]' , null ) ;
215+ } )
216+ . then ( function ( ) {
217+ assertNodeCount ( '.' + constants . groupClassName , 0 ) ;
218+ expect ( gd . _fullLayout . _pushmargin [ 'slider-0' ] ) . toBeUndefined ( ) ;
219+ expect ( gd . _fullLayout . _pushmargin [ 'slider-1' ] ) . toBeUndefined ( ) ;
220+
221+ return Plotly . relayout ( gd , {
222+ 'sliders[0].visible' : true ,
223+ 'sliders[1].visible' : true
224+ } ) ;
225+ } ) . then ( function ( ) {
226+ assertNodeCount ( '.' + constants . groupClassName , 1 ) ;
227+ expect ( gd . _fullLayout . _pushmargin [ 'slider-0' ] ) . toBeDefined ( ) ;
228+ expect ( gd . _fullLayout . _pushmargin [ 'slider-1' ] ) . toBeUndefined ( ) ;
229+
230+ return Plotly . relayout ( gd , {
231+ 'sliders[1]' : {
232+ steps : [ {
233+ method : 'relayout' ,
234+ args : [ 'title' , 'new title' ] ,
235+ label : '1970'
236+ } , {
237+ method : 'relayout' ,
238+ args : [ 'title' , 'new title' ] ,
239+ label : '1971'
240+ } ]
241+ }
242+ } ) ;
243+ } )
244+ . then ( function ( ) {
245+ assertNodeCount ( '.' + constants . groupClassName , 2 ) ;
246+ expect ( gd . _fullLayout . _pushmargin [ 'slider-0' ] ) . toBeDefined ( ) ;
247+ expect ( gd . _fullLayout . _pushmargin [ 'slider-1' ] ) . toBeDefined ( ) ;
248+ } )
249+ . catch ( fail ) . then ( done ) ;
250+ } ) ;
251+
252+ function assertNodeCount ( query , cnt ) {
253+ expect ( d3 . selectAll ( query ) . size ( ) ) . toEqual ( cnt ) ;
254+ }
255+
256+ } ) ;
0 commit comments