@@ -7,38 +7,40 @@ describe('Angular 1 to 2 Quick Reference Tests', function () {
7
7
it ( 'should display no poster images after bootstrap' , function ( ) {
8
8
testImagesAreDisplayed ( false ) ;
9
9
} ) ;
10
-
10
+
11
11
it ( 'should display proper movie data' , function ( ) {
12
12
// We check only a few samples
13
13
var expectedSamples = [
14
14
{ row : 0 , column : 0 , element : 'img' , attr : 'src' , value : 'images/hero.png' , contains : true } ,
15
15
{ row : 0 , column : 2 , value : 'Celeritas' } ,
16
- { row : 1 , column : 3 , value : ' Dec 17 , 2015' } ,
16
+ { row : 1 , column : 3 , matches : / D e c 1 [ 6 7 8 ] , 2 0 1 5 / } , // absorb timezone dif; we care about date format
17
17
{ row : 1 , column : 5 , value : '$14.95' } ,
18
18
{ row : 2 , column : 4 , value : 'PG-13' } ,
19
19
{ row : 2 , column : 7 , value : '100%' } ,
20
20
{ row : 2 , column : 0 , element : 'img' , attr : 'src' , value : 'images/ng-logo.png' , contains : true } ,
21
21
] ;
22
-
22
+
23
23
// Go through the samples
24
24
var movieRows = getMovieRows ( ) ;
25
25
for ( var i = 0 ; i < expectedSamples . length ; i ++ ) {
26
26
var sample = expectedSamples [ i ] ;
27
27
var tableCell = movieRows . get ( sample . row )
28
28
. all ( by . tagName ( 'td' ) ) . get ( sample . column ) ;
29
29
// Check the cell or its nested element
30
- var elementToCheck = sample . element
30
+ var elementToCheck = sample . element
31
31
? tableCell . element ( by . tagName ( sample . element ) )
32
32
: tableCell ;
33
-
33
+
34
34
// Check element attribute or text
35
35
var valueToCheck = sample . attr
36
36
? elementToCheck . getAttribute ( sample . attr )
37
37
: elementToCheck . getText ( ) ;
38
38
39
- // Test for equals/contains
39
+ // Test for equals/contains/match
40
40
if ( sample . contains ) {
41
41
expect ( valueToCheck ) . toContain ( sample . value ) ;
42
+ } else if ( sample . matches ) {
43
+ expect ( valueToCheck ) . toMatch ( sample . matches ) ;
42
44
} else {
43
45
expect ( valueToCheck ) . toEqual ( sample . value ) ;
44
46
}
@@ -48,53 +50,53 @@ describe('Angular 1 to 2 Quick Reference Tests', function () {
48
50
it ( 'should display images after Show Poster' , function ( ) {
49
51
testPosterButtonClick ( "Show Poster" , true ) ;
50
52
} ) ;
51
-
53
+
52
54
it ( 'should hide images after Hide Poster' , function ( ) {
53
55
testPosterButtonClick ( "Hide Poster" , false ) ;
54
56
} ) ;
55
-
57
+
56
58
it ( 'should display no movie when no favorite hero is specified' , function ( ) {
57
59
testFavoriteHero ( null , "Please enter your favorite hero." ) ;
58
60
} ) ;
59
61
60
62
it ( 'should display no movie for Magneta' , function ( ) {
61
63
testFavoriteHero ( "Magneta" , "No movie, sorry!" ) ;
62
64
} ) ;
63
-
65
+
64
66
it ( 'should display a movie for Mr. Nice' , function ( ) {
65
67
testFavoriteHero ( "Mr. Nice" , "Excellent choice!" ) ;
66
68
} ) ;
67
-
69
+
68
70
function testImagesAreDisplayed ( isDisplayed ) {
69
71
var expectedMovieCount = 3 ;
70
-
72
+
71
73
var movieRows = getMovieRows ( ) ;
72
74
expect ( movieRows . count ( ) ) . toBe ( expectedMovieCount ) ;
73
75
for ( var i = 0 ; i < expectedMovieCount ; i ++ ) {
74
76
var movieImage = movieRows . get ( i ) . element ( by . css ( 'td > img' ) ) ;
75
77
expect ( movieImage . isDisplayed ( ) ) . toBe ( isDisplayed ) ;
76
78
}
77
79
}
78
-
80
+
79
81
function testPosterButtonClick ( expectedButtonText , isDisplayed ) {
80
82
var posterButton = element ( by . css ( 'movie-list tr > th > button' ) ) ;
81
83
expect ( posterButton . getText ( ) ) . toBe ( expectedButtonText ) ;
82
-
84
+
83
85
posterButton . click ( ) . then ( function ( ) {
84
86
testImagesAreDisplayed ( isDisplayed ) ;
85
87
} )
86
88
}
87
-
89
+
88
90
function getMovieRows ( ) {
89
91
return element . all ( by . css ( 'movie-list tbody > tr' ) ) ;
90
92
}
91
-
93
+
92
94
function testFavoriteHero ( heroName , expectedLabel ) {
93
- var movieListComp = element ( by . tagName ( 'movie-list' ) ) ;
95
+ var movieListComp = element ( by . tagName ( 'movie-list' ) ) ;
94
96
var heroInput = movieListComp . element ( by . tagName ( 'input' ) ) ;
95
97
var favoriteHeroLabel = movieListComp . element ( by . tagName ( 'h3' ) ) ;
96
98
var resultLabel = movieListComp . element ( by . css ( 'span > p' ) ) ;
97
-
99
+
98
100
heroInput . clear ( ) . then ( function ( ) {
99
101
sendKeys ( heroInput , heroName || '' ) . then ( function ( ) {
100
102
expect ( resultLabel . getText ( ) ) . toBe ( expectedLabel ) ;
0 commit comments