1+ 'use strict' ;
2+
3+ describe ( 'uiSortable' , function ( ) {
4+
5+ // Ensure the sortable angular module is loaded
6+ beforeEach ( module ( 'ui.sortable' ) ) ;
7+ beforeEach ( module ( 'ui.sortable.testHelper' ) ) ;
8+
9+ var EXTRA_DY_PERCENTAGE , listContent ;
10+
11+ beforeEach ( inject ( function ( sortableTestHelper ) {
12+ EXTRA_DY_PERCENTAGE = sortableTestHelper . EXTRA_DY_PERCENTAGE ;
13+ listContent = sortableTestHelper . listContent ;
14+ } ) ) ;
15+
16+ describe ( 'Custom directive options related' , function ( ) {
17+
18+ var host ;
19+
20+ beforeEach ( inject ( function ( ) {
21+ host = $ ( '<div id="test-host"></div>' ) ;
22+ $ ( 'body' ) . append ( host ) ;
23+ } ) ) ;
24+
25+ afterEach ( function ( ) {
26+ host . remove ( ) ;
27+ host = null ;
28+ } ) ;
29+
30+ it ( 'should work when "ui-floating: false" option is used' , function ( ) {
31+ inject ( function ( $compile , $rootScope ) {
32+ var element ;
33+ element = $compile ( '<ul ui-sortable="opts" ng-model="items"><li ng-repeat="item in items" id="s-{{$index}}" class="sortable-item">{{ item }}</li></ul>' ) ( $rootScope ) ;
34+ $rootScope . $apply ( function ( ) {
35+ $rootScope . opts = {
36+ 'ui-floating' : false
37+ } ;
38+ $rootScope . items = [ 'One' , 'Two' , 'Three' ] ;
39+ } ) ;
40+
41+ host . append ( element ) ;
42+
43+ var li = element . find ( ':eq(0)' ) ;
44+ var dy = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerHeight ( ) ;
45+ li . simulate ( 'drag' , { dy : dy } ) ;
46+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'One' , 'Three' ] ) ;
47+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
48+
49+ li = element . find ( ':eq(1)' ) ;
50+ dy = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerHeight ( ) ;
51+ li . simulate ( 'drag' , { dy : dy } ) ;
52+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'Three' , 'One' ] ) ;
53+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
54+
55+ li = element . find ( ':eq(1)' ) ;
56+ dy = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerHeight ( ) ;
57+ li . simulate ( 'drag' , { dy : dy } ) ;
58+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'One' , 'Three' ] ) ;
59+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
60+
61+ $ ( element ) . remove ( ) ;
62+ } ) ;
63+ } ) ;
64+
65+ it ( 'should work when "ui-floating: true" option is used' , function ( ) {
66+ inject ( function ( $compile , $rootScope ) {
67+ var element ;
68+ element = $compile ( '<ul ui-sortable="opts" ng-model="items"><li class="floatleft" ng-repeat="item in items" id="s-{{$index}}" class="sortable-item">{{ item }}</li></ul>' ) ( $rootScope ) ;
69+ $rootScope . $apply ( function ( ) {
70+ $rootScope . opts = {
71+ 'ui-floating' : true
72+ } ;
73+ $rootScope . items = [ 'One' , 'Two' , 'Three' ] ;
74+ } ) ;
75+
76+ host . append ( element ) . append ( '<div class="clear"></div>' ) ;
77+
78+ var li = element . find ( ':eq(0)' ) ;
79+ var dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
80+ li . simulate ( 'drag' , { dx : dx } ) ;
81+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'One' , 'Three' ] ) ;
82+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
83+
84+ li = element . find ( ':eq(1)' ) ;
85+ dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
86+ li . simulate ( 'drag' , { dx : dx } ) ;
87+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'Three' , 'One' ] ) ;
88+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
89+
90+ li = element . find ( ':eq(1)' ) ;
91+ dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
92+ li . simulate ( 'drag' , { dx : dx , moves : 5 } ) ;
93+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'One' , 'Three' ] ) ;
94+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
95+
96+ $ ( element ) . remove ( ) ;
97+ } ) ;
98+ } ) ;
99+
100+ it ( 'should work when "ui-floating: \'auto\'" option is used and elements are "float"ing' , function ( ) {
101+ inject ( function ( $compile , $rootScope ) {
102+ var element ;
103+ element = $compile ( '<ul ui-sortable="opts" ng-model="items"><li class="floatleft" ng-repeat="item in items" id="s-{{$index}}" class="sortable-item">{{ item }}</li></ul>' ) ( $rootScope ) ;
104+ $rootScope . $apply ( function ( ) {
105+ $rootScope . opts = {
106+ 'ui-floating' : 'auto'
107+ } ;
108+ $rootScope . items = [ 'One' , 'Two' , 'Three' ] ;
109+ } ) ;
110+
111+ host . append ( element ) . append ( '<div class="clear"></div>' ) ;
112+
113+ var li = element . find ( ':eq(0)' ) ;
114+ var dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
115+ li . simulate ( 'drag' , { dx : dx } ) ;
116+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'One' , 'Three' ] ) ;
117+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
118+
119+ li = element . find ( ':eq(1)' ) ;
120+ dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
121+ li . simulate ( 'drag' , { dx : dx } ) ;
122+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'Three' , 'One' ] ) ;
123+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
124+
125+ li = element . find ( ':eq(1)' ) ;
126+ dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
127+ li . simulate ( 'drag' , { dx : dx , moves : 5 } ) ;
128+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'One' , 'Three' ] ) ;
129+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
130+
131+ $ ( element ) . remove ( ) ;
132+ } ) ;
133+ } ) ;
134+
135+ it ( 'should work when "ui-floating: \'auto\'" option is used and elements are "display: inline-block"' , function ( ) {
136+ inject ( function ( $compile , $rootScope ) {
137+ var element ;
138+ element = $compile ( '<ul ui-sortable="opts" ng-model="items"><li class="inline-block" ng-repeat="item in items" id="s-{{$index}}" class="sortable-item">{{ item }}</li></ul>' ) ( $rootScope ) ;
139+ $rootScope . $apply ( function ( ) {
140+ $rootScope . opts = {
141+ 'ui-floating' : 'auto'
142+ } ;
143+ $rootScope . items = [ 'One' , 'Two' , 'Three' ] ;
144+ } ) ;
145+
146+ host . append ( element ) ;
147+
148+ var li = element . find ( ':eq(0)' ) ;
149+ var dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
150+ li . simulate ( 'drag' , { dx : dx } ) ;
151+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'One' , 'Three' ] ) ;
152+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
153+
154+ li = element . find ( ':eq(1)' ) ;
155+ dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
156+ li . simulate ( 'drag' , { dx : dx } ) ;
157+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'Three' , 'One' ] ) ;
158+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
159+
160+ li = element . find ( ':eq(1)' ) ;
161+ dx = ( 1 + EXTRA_DY_PERCENTAGE ) * li . outerWidth ( ) ;
162+ li . simulate ( 'drag' , { dx : dx , moves : 5 } ) ;
163+ expect ( $rootScope . items ) . toEqual ( [ 'Two' , 'One' , 'Three' ] ) ;
164+ expect ( $rootScope . items ) . toEqual ( listContent ( element ) ) ;
165+
166+ $ ( element ) . remove ( ) ;
167+ } ) ;
168+ } ) ;
169+
170+ } ) ;
171+
172+ } ) ;
0 commit comments