| 
									
										
										
										
											2016-06-16 02:01:03 +01:00
										 |  |  | /// <reference path='../_protractor/e2e.d.ts' />
 | 
					
						
							|  |  |  | 'use strict'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  | describe('Dependency Injection Tests', function () { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |   let expectedMsg: string; | 
					
						
							|  |  |  |   let expectedMsgRx: RegExp; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   beforeAll(function () { | 
					
						
							|  |  |  |     browser.get(''); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe('Cars:', function() { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('DI car displays as expected', function () { | 
					
						
							|  |  |  |       expectedMsg = 'DI car with 4 cylinders and Flintstone tires.'; | 
					
						
							|  |  |  |       expect(element(by.css('#di')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('No DI car displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'No DI car with 4 cylinders and Flintstone tires.'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#nodi')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('Injector car displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'Injector car with 4 cylinders and Flintstone tires.'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#injector')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('Factory car displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'Factory car with 4 cylinders and Flintstone tires.'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#factory')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('Simple car displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'Simple car with 4 cylinders and Flintstone tires.'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#simple')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('Super car displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'Super car with 12 cylinders and Flintstone tires.'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#super')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('Test car displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'Test car with 8 cylinders and YokoGoodStone tires.'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#test')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |   describe('Other Injections:', function() { | 
					
						
							|  |  |  |     it('DI car displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'DI car with 4 cylinders and Flintstone tires.'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#car')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('Hero displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'Mr. Nice'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#hero')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('Optional injection displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expectedMsg = 'R.O.U.S.\'s? I don\'t think they exist!'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#rodent')).getText()).toEqual(expectedMsg); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |   describe('Tests:', function() { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('Tests display as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |       expectedMsgRx = /Tests passed/; | 
					
						
							|  |  |  |       expect(element(by.css('#tests')).getText()).toMatch(expectedMsgRx); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |   describe('Provider variations:', function() { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('P1 (class) displays as expected', function () { | 
					
						
							|  |  |  |       expectedMsg = 'Hello from logger provided with Logger class'; | 
					
						
							|  |  |  |       expect(element(by.css('#p1')).getText()).toEqual(expectedMsg); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 09:25:48 -07:00
										 |  |  |     it('P3 (provide) displays as expected', function () { | 
					
						
							|  |  |  |       expectedMsg = 'Hello from logger provided with useClass:Logger'; | 
					
						
							|  |  |  |       expect(element(by.css('#p3')).getText()).toEqual(expectedMsg); | 
					
						
							| 
									
										
										
										
											2016-05-16 21:56:13 -04:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('P4 (useClass:BetterLogger) displays as expected', function () { | 
					
						
							|  |  |  |       expectedMsg = 'Hello from logger provided with useClass:BetterLogger'; | 
					
						
							|  |  |  |       expect(element(by.css('#p4')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('P5 (useClass:EvenBetterLogger - dependency)  displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-06-03 11:16:46 -07:00
										 |  |  |       expectedMsg = 'Message to Bob: Hello from EvenBetterlogger'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#p5')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('P6a (no alias) displays as expected', function () { | 
					
						
							|  |  |  |       expectedMsg = 'Hello OldLogger (but we want NewLogger)'; | 
					
						
							|  |  |  |       expect(element(by.css('#p6a')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('P6b (alias) displays as expected', function () { | 
					
						
							|  |  |  |       expectedMsg = 'Hello from NewLogger (via aliased OldLogger)'; | 
					
						
							|  |  |  |       expect(element(by.css('#p6b')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('P7 (useValue) displays as expected', function () { | 
					
						
							|  |  |  |       expectedMsg = 'Silent logger says "Shhhhh!". Provided via "useValue"'; | 
					
						
							|  |  |  |       expect(element(by.css('#p7')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('P8 (useFactory) displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-06-03 11:16:46 -07:00
										 |  |  |       expectedMsg = 'Hero service injected successfully via heroServiceProvider'; | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element(by.css('#p8')).getText()).toEqual(expectedMsg); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-03 11:16:46 -07:00
										 |  |  |     it('P9 (OpaqueToken) displays as expected', function () { | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expectedMsg = 'APP_CONFIG Application title is Dependency Injection'; | 
					
						
							| 
									
										
										
										
											2016-06-03 11:16:46 -07:00
										 |  |  |       expect(element(by.css('#p9')).getText()).toEqual(expectedMsg); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-03 11:16:46 -07:00
										 |  |  |     it('P10 (optional dependency) displays as expected', function () { | 
					
						
							|  |  |  |       expectedMsg = 'Optional logger was not available'; | 
					
						
							|  |  |  |       expect(element(by.css('#p10')).getText()).toEqual(expectedMsg); | 
					
						
							| 
									
										
										
										
											2016-06-08 01:06:25 +02:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |   describe('User/Heroes:', function() { | 
					
						
							|  |  |  |     it('User is Bob - unauthorized', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |       expectedMsgRx = /Bob, is not authorized/; | 
					
						
							|  |  |  |       expect(element(by.css('#user')).getText()).toMatch(expectedMsgRx); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('should have button', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |       expect(element.all(by.cssContainingText('button', 'Next User')) | 
					
						
							|  |  |  |         .get(0).isDisplayed()).toBe(true, '\'Next User\' button should be displayed'); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('unauthorized user should have multiple unauthorized heroes', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |       let heroes = element.all(by.css('#unauthorized hero-list div')); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       expect(heroes.count()).toBeGreaterThan(0); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     it('unauthorized user should have no secret heroes', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |       let heroes = element.all(by.css('#unauthorized hero-list div')); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(heroes.count()).toBeGreaterThan(0); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       heroes.filter(function(elem, index){ | 
					
						
							|  |  |  |         return elem.getText().then(function(text) { | 
					
						
							|  |  |  |           return /secret/.test(text); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       }).then(function(filteredElements) { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |         // console.log("******Secret heroes count: "+filteredElements.length);
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |         expect(filteredElements.length).toEqual(0); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('unauthorized user should have no authorized heroes listed', function () { | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       expect(element.all(by.css('#authorized hero-list div')).count()).toEqual(0); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     describe('after button click', function() { | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       beforeAll(function (done) { | 
					
						
							| 
									
										
										
										
											2016-06-08 01:06:25 +02:00
										 |  |  |         let buttonEle = element.all(by.cssContainingText('button', 'Next User')).get(0); | 
					
						
							|  |  |  |         buttonEle.click().then(done, done); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       it('User is Alice  - authorized', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |         expectedMsgRx = /Alice, is authorized/; | 
					
						
							|  |  |  |         expect(element(by.css('#user')).getText()).toMatch(expectedMsgRx); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       it('authorized user should have multiple authorized heroes ', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |         let heroes = element.all(by.css('#authorized hero-list div')); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |         expect(heroes.count()).toBeGreaterThan(0); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |       it('authorized user should have secret heroes', function () { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |         let heroes = element.all(by.css('#authorized hero-list div')); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |         expect(heroes.count()).toBeGreaterThan(0); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |         heroes.filter(function(elem, index){ | 
					
						
							|  |  |  |          return elem.getText().then(function(text) { | 
					
						
							|  |  |  |             return /secret/.test(text); | 
					
						
							|  |  |  |           }); | 
					
						
							|  |  |  |         }).then(function(filteredElements) { | 
					
						
							| 
									
										
										
										
											2016-05-30 11:05:09 -07:00
										 |  |  |           // console.log("******Secret heroes count: "+filteredElements.length);
 | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |           expect(filteredElements.length).toBeGreaterThan(0); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |         }); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('authorized user should have no unauthorized heroes listed', function () { | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |         expect(element.all(by.css('#unauthorized hero-list div')).count()).toEqual(0); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-05-01 23:04:47 +02:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2016-01-11 13:49:12 +01:00
										 |  |  | }); |