111 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			111 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | describe('Angular 1 to 2 Quick Reference Tests', function () { | ||
|  | 
 | ||
|  |   beforeAll(function () { | ||
|  |     browser.get(''); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('should display no poster images after bootstrap', function () { | ||
|  |     testImagesAreDisplayed(false); | ||
|  |   }); | ||
|  |    | ||
|  |   it('should display proper movie data', function () { | ||
|  |     // We check only a few samples
 | ||
|  |     var expectedSamples = [ | ||
|  |       {row: 0, column: 0, element: 'img', attr: 'src', value: 'images/hero.png', contains: true}, | ||
|  |       {row: 0, column: 2, value: 'Celeritas'}, | ||
|  |       {row: 1, column: 3, value: 'Dec 17, 2015'}, | ||
|  |       {row: 1, column: 5, value: '$14.95'}, | ||
|  |       {row: 2, column: 4, value: 'PG-13'}, | ||
|  |       {row: 2, column: 7, value: '100%'}, | ||
|  |       {row: 2, column: 0, element: 'img', attr: 'src', value: 'images/ng-logo.png', contains: true}, | ||
|  |     ]; | ||
|  |      | ||
|  |     // Go through the samples
 | ||
|  |     var movieRows = getMovieRows(); | ||
|  |     for (var i = 0; i < expectedSamples.length; i++) { | ||
|  |       var sample = expectedSamples[i]; | ||
|  |       var tableCell = movieRows.get(sample.row) | ||
|  |         .all(by.tagName('td')).get(sample.column); | ||
|  |       // Check the cell or its nested element
 | ||
|  |       var elementToCheck = sample.element  | ||
|  |         ? tableCell.element(by.tagName(sample.element)) | ||
|  |         : tableCell; | ||
|  |          | ||
|  |       // Check element attribute or text
 | ||
|  |       var valueToCheck = sample.attr | ||
|  |         ? elementToCheck.getAttribute(sample.attr) | ||
|  |         : elementToCheck.getText(); | ||
|  | 
 | ||
|  |       // Test for equals/contains
 | ||
|  |       if (sample.contains) { | ||
|  |         expect(valueToCheck).toContain(sample.value); | ||
|  |       } else { | ||
|  |         expect(valueToCheck).toEqual(sample.value); | ||
|  |       } | ||
|  |     } | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('should display images after Show Poster', function () { | ||
|  |     testPosterButtonClick("Show Poster", true); | ||
|  |   }); | ||
|  |    | ||
|  |   it('should hide images after Hide Poster', function () { | ||
|  |     testPosterButtonClick("Hide Poster", false); | ||
|  |   }); | ||
|  |    | ||
|  |   it('should display no movie when no favorite hero is specified', function () { | ||
|  |     testFavoriteHero(null, "Please enter your favorite hero."); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('should display no movie for Magneta', function () { | ||
|  |     testFavoriteHero("Magneta", "No movie, sorry!"); | ||
|  |   }); | ||
|  |    | ||
|  |   it('should display a movie for Mr. Nice', function () { | ||
|  |     testFavoriteHero("Mr. Nice", "Excellent choice!"); | ||
|  |   }); | ||
|  |    | ||
|  |   function testImagesAreDisplayed(isDisplayed) { | ||
|  |     var expectedMovieCount = 3; | ||
|  |      | ||
|  |     var movieRows = getMovieRows(); | ||
|  |     expect(movieRows.count()).toBe(expectedMovieCount); | ||
|  |     for (var i = 0; i < expectedMovieCount; i++) { | ||
|  |       var movieImage = movieRows.get(i).element(by.css('td > img')); | ||
|  |       expect(movieImage.isDisplayed()).toBe(isDisplayed); | ||
|  |     } | ||
|  |   } | ||
|  |    | ||
|  |   function testPosterButtonClick(expectedButtonText, isDisplayed) { | ||
|  |     var posterButton = element(by.css('movie-list tr > th > button')); | ||
|  |     expect(posterButton.getText()).toBe(expectedButtonText); | ||
|  |      | ||
|  |     posterButton.click().then(function () { | ||
|  |       testImagesAreDisplayed(isDisplayed); | ||
|  |     }) | ||
|  |   } | ||
|  |    | ||
|  |   function getMovieRows() { | ||
|  |     return element.all(by.css('movie-list tbody > tr')); | ||
|  |   } | ||
|  |    | ||
|  |   function testFavoriteHero(heroName, expectedLabel) { | ||
|  |     var movieListComp = element(by.tagName('movie-list'));  | ||
|  |     var heroInput = movieListComp.element(by.tagName('input')); | ||
|  |     var favoriteHeroLabel = movieListComp.element(by.tagName('h3')); | ||
|  |     var resultLabel = movieListComp.element(by.css('span > p')); | ||
|  |        | ||
|  |     heroInput.clear().then(function () { | ||
|  |       sendKeys(heroInput, heroName || '').then(function () { | ||
|  |         expect(resultLabel.getText()).toBe(expectedLabel); | ||
|  |         if (heroName) { | ||
|  |           expect(favoriteHeroLabel.isDisplayed()).toBe(true); | ||
|  |           expect(favoriteHeroLabel.getText()).toContain(heroName); | ||
|  |         } else { | ||
|  |           expect(favoriteHeroLabel.isDisplayed()).toBe(false); | ||
|  |         } | ||
|  |       }) | ||
|  |     }) | ||
|  |   } | ||
|  | }); |