72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  AsyncTestCompleter,
							 | 
						||
| 
								 | 
							
								  beforeEach,
							 | 
						||
| 
								 | 
							
								  ddescribe,
							 | 
						||
| 
								 | 
							
								  describe,
							 | 
						||
| 
								 | 
							
								  el,
							 | 
						||
| 
								 | 
							
								  expect,
							 | 
						||
| 
								 | 
							
								  iit,
							 | 
						||
| 
								 | 
							
								  inject,
							 | 
						||
| 
								 | 
							
								  it,
							 | 
						||
| 
								 | 
							
								  xit,
							 | 
						||
| 
								 | 
							
								} from 'angular2/test_lib';
							 | 
						||
| 
								 | 
							
								import {DOM} from 'angular2/src/dom/dom_adapter';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {Component, Directive, View} from 'angular2/angular2';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {ElementRef} from 'angular2/src/core/compiler/element_ref';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {NgNonBindable} from 'angular2/src/directives/ng_non_bindable';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {TestBed} from 'angular2/src/test_lib/test_bed';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function main() {
							 | 
						||
| 
								 | 
							
								  describe('non-bindable', () => {
							 | 
						||
| 
								 | 
							
								    it('should not interpolate children', inject([TestBed, AsyncTestCompleter], (tb, async) => {
							 | 
						||
| 
								 | 
							
								         var template = '<div>{{text}}<span ng-non-bindable>{{text}}</span></div>';
							 | 
						||
| 
								 | 
							
								         tb.createView(TestComponent, {html: template})
							 | 
						||
| 
								 | 
							
								             .then((view) => {
							 | 
						||
| 
								 | 
							
								               view.detectChanges();
							 | 
						||
| 
								 | 
							
								               expect(DOM.getText(view.rootNodes[0])).toEqual('foo{{text}}');
							 | 
						||
| 
								 | 
							
								               async.done();
							 | 
						||
| 
								 | 
							
								             });
							 | 
						||
| 
								 | 
							
								       }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should ignore directives on child nodes',
							 | 
						||
| 
								 | 
							
								       inject([TestBed, AsyncTestCompleter], (tb, async) => {
							 | 
						||
| 
								 | 
							
								         var template = '<div ng-non-bindable><span id=child test-dec>{{text}}</span></div>';
							 | 
						||
| 
								 | 
							
								         tb.createView(TestComponent, {html: template})
							 | 
						||
| 
								 | 
							
								             .then((view) => {
							 | 
						||
| 
								 | 
							
								               view.detectChanges();
							 | 
						||
| 
								 | 
							
								               var span = DOM.querySelector(view.rootNodes[0], '#child');
							 | 
						||
| 
								 | 
							
								               expect(DOM.hasClass(span, 'compiled')).toBeFalsy();
							 | 
						||
| 
								 | 
							
								               async.done();
							 | 
						||
| 
								 | 
							
								             });
							 | 
						||
| 
								 | 
							
								       }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should trigger directives on the same node',
							 | 
						||
| 
								 | 
							
								       inject([TestBed, AsyncTestCompleter], (tb, async) => {
							 | 
						||
| 
								 | 
							
								         var template = '<div><span id=child ng-non-bindable test-dec>{{text}}</span></div>';
							 | 
						||
| 
								 | 
							
								         tb.createView(TestComponent, {html: template})
							 | 
						||
| 
								 | 
							
								             .then((view) => {
							 | 
						||
| 
								 | 
							
								               view.detectChanges();
							 | 
						||
| 
								 | 
							
								               var span = DOM.querySelector(view.rootNodes[0], '#child');
							 | 
						||
| 
								 | 
							
								               expect(DOM.hasClass(span, 'compiled')).toBeTruthy();
							 | 
						||
| 
								 | 
							
								               async.done();
							 | 
						||
| 
								 | 
							
								             });
							 | 
						||
| 
								 | 
							
								       }));
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Directive({selector: '[test-dec]'})
							 | 
						||
| 
								 | 
							
								class TestDirective {
							 | 
						||
| 
								 | 
							
								  constructor(el: ElementRef) { DOM.addClass(el.domElement, 'compiled'); }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Component({selector: 'test-cmp'})
							 | 
						||
| 
								 | 
							
								@View({directives: [NgNonBindable, TestDirective]})
							 | 
						||
| 
								 | 
							
								class TestComponent {
							 | 
						||
| 
								 | 
							
								  text: string;
							 | 
						||
| 
								 | 
							
								  constructor() { this.text = 'foo'; }
							 | 
						||
| 
								 | 
							
								}
							 |