| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | import {beforeEach, ddescribe, describe, expect, iit, inject, it, xit,} from '@angular/core/testing/testing_internal'; | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | import {TestComponentBuilder, ComponentFixture} from '@angular/compiler/testing'; | 
					
						
							|  |  |  | import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter'; | 
					
						
							|  |  |  | import {Component, Directive} from '@angular/core'; | 
					
						
							|  |  |  | import {ElementRef} from '@angular/core/src/linker/element_ref'; | 
					
						
							|  |  |  | import {AsyncTestCompleter} from '@angular/core/testing/testing_internal'; | 
					
						
							| 
									
										
										
										
											2015-05-26 14:22:35 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | export function main() { | 
					
						
							|  |  |  |   describe('non-bindable', () => { | 
					
						
							| 
									
										
										
										
											2015-06-11 18:50:41 -07:00
										 |  |  |     it('should not interpolate children', | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |        inject( | 
					
						
							|  |  |  |            [TestComponentBuilder, AsyncTestCompleter], | 
					
						
							|  |  |  |            (tcb: TestComponentBuilder, async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              var template = '<div>{{text}}<span ngNonBindable>{{text}}</span></div>'; | 
					
						
							|  |  |  |              tcb.overrideTemplate(TestComponent, template) | 
					
						
							|  |  |  |                  .createAsync(TestComponent) | 
					
						
							|  |  |  |                  .then((fixture) => { | 
					
						
							|  |  |  |                    fixture.detectChanges(); | 
					
						
							|  |  |  |                    expect(fixture.debugElement.nativeElement).toHaveText('foo{{text}}'); | 
					
						
							|  |  |  |                    async.done(); | 
					
						
							|  |  |  |                  }); | 
					
						
							|  |  |  |            })); | 
					
						
							| 
									
										
										
										
											2015-05-26 14:22:35 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it('should ignore directives on child nodes', | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |        inject( | 
					
						
							|  |  |  |            [TestComponentBuilder, AsyncTestCompleter], | 
					
						
							|  |  |  |            (tcb: TestComponentBuilder, async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              var template = '<div ngNonBindable><span id=child test-dec>{{text}}</span></div>'; | 
					
						
							|  |  |  |              tcb.overrideTemplate(TestComponent, template) | 
					
						
							|  |  |  |                  .createAsync(TestComponent) | 
					
						
							|  |  |  |                  .then((fixture) => { | 
					
						
							|  |  |  |                    fixture.detectChanges(); | 
					
						
							| 
									
										
										
										
											2015-06-24 13:07:15 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |                    // We must use getDOM().querySelector instead of fixture.query here
 | 
					
						
							|  |  |  |                    // since the elements inside are not compiled.
 | 
					
						
							|  |  |  |                    var span = getDOM().querySelector(fixture.debugElement.nativeElement, '#child'); | 
					
						
							|  |  |  |                    expect(getDOM().hasClass(span, 'compiled')).toBeFalsy(); | 
					
						
							|  |  |  |                    async.done(); | 
					
						
							|  |  |  |                  }); | 
					
						
							|  |  |  |            })); | 
					
						
							| 
									
										
										
										
											2015-05-26 14:22:35 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it('should trigger directives on the same node', | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |        inject( | 
					
						
							|  |  |  |            [TestComponentBuilder, AsyncTestCompleter], | 
					
						
							|  |  |  |            (tcb: TestComponentBuilder, async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              var template = '<div><span id=child ngNonBindable test-dec>{{text}}</span></div>'; | 
					
						
							|  |  |  |              tcb.overrideTemplate(TestComponent, template) | 
					
						
							|  |  |  |                  .createAsync(TestComponent) | 
					
						
							|  |  |  |                  .then((fixture) => { | 
					
						
							|  |  |  |                    fixture.detectChanges(); | 
					
						
							|  |  |  |                    var span = getDOM().querySelector(fixture.debugElement.nativeElement, '#child'); | 
					
						
							|  |  |  |                    expect(getDOM().hasClass(span, 'compiled')).toBeTruthy(); | 
					
						
							|  |  |  |                    async.done(); | 
					
						
							|  |  |  |                  }); | 
					
						
							|  |  |  |            })); | 
					
						
							| 
									
										
										
										
											2015-05-26 14:22:35 -07:00
										 |  |  |   }) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @Directive({selector: '[test-dec]'}) | 
					
						
							|  |  |  | class TestDirective { | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  |   constructor(el: ElementRef) { getDOM().addClass(el.nativeElement, 'compiled'); } | 
					
						
							| 
									
										
										
										
											2015-05-26 14:22:35 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-08 13:36:48 -08:00
										 |  |  | @Component({selector: 'test-cmp', directives: [TestDirective], template: ''}) | 
					
						
							| 
									
										
										
										
											2015-05-26 14:22:35 -07:00
										 |  |  | class TestComponent { | 
					
						
							|  |  |  |   text: string; | 
					
						
							|  |  |  |   constructor() { this.text = 'foo'; } | 
					
						
							|  |  |  | } |