92 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {verifyNoBrowserErrors} from '@angular/platform-browser/testing_e2e';
 | |
| 
 | |
| function waitForElement(selector) {
 | |
|   var EC = (<any>protractor).ExpectedConditions;
 | |
|   // Waits for the element with id 'abc' to be present on the dom.
 | |
|   browser.wait(EC.presenceOf($(selector)), 20000);
 | |
| }
 | |
| 
 | |
| describe('alt-routing inbox-app', () => {
 | |
| 
 | |
|   afterEach(verifyNoBrowserErrors);
 | |
| 
 | |
|   describe('index view', () => {
 | |
|     var URL = 'all/playground/src/alt_routing/';
 | |
| 
 | |
|     it('should list out the current collection of items', () => {
 | |
|       browser.get(URL);
 | |
|       waitForElement('.inbox-item-record');
 | |
|       expect(element.all(by.css('.inbox-item-record')).count()).toEqual(200);
 | |
|     });
 | |
| 
 | |
|     it('should build a link which points to the detail page', () => {
 | |
|       browser.get(URL);
 | |
|       waitForElement('#item-15');
 | |
|       expect(element(by.css('#item-15')).getAttribute('href')).toMatch(/\/detail\/15$/);
 | |
|       element(by.css('#item-15')).click();
 | |
|       waitForElement('#record-id');
 | |
|       expect(browser.getCurrentUrl()).toMatch(/\/detail\/15$/);
 | |
|     });
 | |
|   });
 | |
| 
 | |
| 
 | |
|   describe('drafts view', () => {
 | |
|     var URL = 'all/playground/src/alt_routing/#/drafts';
 | |
| 
 | |
|     it('should navigate to the drafts view when the drafts link is clicked', () => {
 | |
|       browser.get(URL);
 | |
|       waitForElement('.inbox-item-record');
 | |
|       element(by.linkText('Drafts')).click();
 | |
|       waitForElement('.page-title');
 | |
|       expect(element(by.css('.page-title')).getText()).toEqual('Drafts');
 | |
|     });
 | |
| 
 | |
|     it('should navigate to email details', () => {
 | |
|       browser.get(URL);
 | |
|       element(by.linkText('Drafts')).click();
 | |
|       waitForElement('.inbox-item-record');
 | |
|       expect(element.all(by.css('.inbox-item-record')).count()).toEqual(2);
 | |
|       expect(element(by.css('#item-201')).getAttribute('href')).toMatch(/\/detail\/201$/);
 | |
|       element(by.css('#item-201')).click();
 | |
|       waitForElement('#record-id');
 | |
|       expect(browser.getCurrentUrl()).toMatch(/\/detail\/201$/);
 | |
|     });
 | |
|   });
 | |
| 
 | |
| 
 | |
|   describe('detail view', () => {
 | |
|     var URL = 'all/playground/src/alt_routing/';
 | |
| 
 | |
|     it('should navigate to the detail view when an email is clicked', () => {
 | |
|       browser.get(URL);
 | |
|       waitForElement('#item-10');
 | |
|       element(by.css('#item-10')).click();
 | |
|       waitForElement('#record-id');
 | |
|       var recordId = element(by.css("#record-id"));
 | |
|       browser.wait(protractor.until.elementTextIs(recordId, "ID: 10"), 5000);
 | |
|       expect(recordId.getText()).toEqual('ID: 10');
 | |
|     });
 | |
| 
 | |
|     it('should navigate back to the email inbox page when the back button is clicked', () => {
 | |
|       browser.get(URL);
 | |
|       waitForElement('#item-10');
 | |
|       element(by.css('#item-10')).click();
 | |
|       waitForElement('.back-button');
 | |
|       element(by.css('.back-button')).click();
 | |
|       expect(browser.getCurrentUrl()).toMatch(/\/$/);
 | |
|     });
 | |
| 
 | |
|     it('should navigate back to index and sort the page items based on the provided querystring param',
 | |
|        () => {
 | |
|          browser.get(URL);
 | |
|          waitForElement('#item-10');
 | |
|          element(by.css('#item-10')).click();
 | |
|          waitForElement('.sort-button');
 | |
|          element(by.css('.sort-button')).click();
 | |
|          expect(browser.getCurrentUrl()).toMatch(/\/;sort=date$/);
 | |
|          waitForElement('.inbox-item-record');
 | |
|          expect(element(by.css(".inbox-item-record > a")).getAttribute("id")).toEqual("item-137");
 | |
|        });
 | |
|   })
 | |
| });
 |