1
+ describe ( 'sortable tabarray' , function ( ) {
2
+ function checkDragDrop ( i ) {
3
+ browser . driver . wait ( protractor . until . elementLocated ( by . xpath ( "//ol/li[1]/a[text()='My name is: Name " + ( i + 1 ) + "']" ) ) , 10000 ) ;
4
+ expect ( element . all ( by . css ( '.nav-tabs li a' ) ) . get ( 0 ) . getText ( ) ) . toBe ( 'My name is: Name ' + ( i + 1 ) ) ;
5
+ }
6
+
7
+ function populateTab ( i ) {
8
+ browser . driver . wait ( protractor . until . elementLocated ( by . css ( '.tab-pane.active.index' + i ) ) , 5000 ) ;
9
+
10
+ browser . driver . wait ( protractor . until . elementLocated ( by . css ( '.tab-pane.index' + i + ' div.nickField > input' ) ) , 5000 ) ;
11
+ input = element . all ( by . css ( '.tab-pane.index' + i + ' div.nickField > input' ) ) . first ( ) ;
12
+ input . sendKeys ( 'Nickname ' + i ) ;
13
+
14
+ browser . driver . wait ( protractor . until . elementLocated ( by . css ( '.tab-pane.index' + i + ' div.nameField > input' ) ) , 5000 ) ;
15
+ input = element . all ( by . css ( '.tab-pane.index' + i + ' div.nameField > input' ) ) . first ( ) ;
16
+ input . sendKeys ( 'Name ' + i ) ;
17
+
18
+ browser . driver . wait ( protractor . until . elementLocated ( by . linkText ( 'My name is: Name ' + i ) ) , 10000 ) ;
19
+ }
20
+
21
+ it ( 'form should exist' , function ( ) {
22
+ browser . get ( 'http://localhost:8080/examples/sortable-tabarray.html' ) ;
23
+
24
+ expect ( element ( by . css ( 'form' ) ) . getInnerHtml ( ) ) . not . toEqual ( '' ) ;
25
+ } ) ;
26
+
27
+ it ( 'should be able order elements in array by dragging the tabs' , function ( ) {
28
+ browser . get ( 'http://localhost:8080/examples/sortable-tabarray.html' ) ;
29
+
30
+ var i ;
31
+ var elementsToAdd = 9 ;
32
+
33
+ /* the array starts with 1 element, populate the first element */
34
+ populateTab ( 0 ) ;
35
+
36
+ /* add elements and populate */
37
+ for ( i = 1 ; i <= elementsToAdd ; i ++ ) {
38
+ var tabLink = element . all ( by . css ( '.glyphicon-plus' ) ) ;
39
+ tabLink . click ( ) . then ( populateTab ( i ) ) ;
40
+ }
41
+
42
+ /* continue when all tabs have been populated*/
43
+ browser . driver . wait ( protractor . until . elementLocated ( by . linkText ( 'My name is: Name ' + elementsToAdd ) ) , 10000 ) ;
44
+
45
+ /* check the number of tabs */
46
+ var tabs = element . all ( by . css ( '.nav-tabs li' ) ) ;
47
+ expect ( tabs . count ( ) ) . toBe ( elementsToAdd + 2 ) ; //Extra 1 for the "+ Add" link
48
+
49
+ /* drag the tabs into reverse order (descending) */
50
+ for ( i = 0 ; i < elementsToAdd ; i ++ ) {
51
+ var draggable_element = element . all ( by . css ( '.nav-tabs li' ) ) . get ( 0 ) ;
52
+ var target_element = element . all ( by . css ( '.nav-tabs li' ) ) . get ( elementsToAdd - i ) ;
53
+ expect ( draggable_element . isPresent ( ) ) . toEqual ( true ) ;
54
+ expect ( target_element . isPresent ( ) ) . toEqual ( true ) ;
55
+ browser . actions ( ) . dragAndDrop ( draggable_element , target_element ) . perform ( ) . then ( checkDragDrop ( i ) ) ;
56
+ }
57
+
58
+ /* final check of the reverse ordered tabs */
59
+ for ( i = 0 ; i <= elementsToAdd ; i ++ ) {
60
+ expect ( element . all ( by . css ( '.nav-tabs li a' ) ) . get ( i ) . getText ( ) ) . toBe ( 'My name is: Name ' + ( elementsToAdd - i ) ) ;
61
+ }
62
+ } ) ;
63
+ } ) ;
0 commit comments