156 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			156 lines
		
	
	
		
			5.8 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, View} from 'angular2/angular2'; | ||
|  | 
 | ||
|  | import {NgSwitch, NgSwitchWhen, NgSwitchDefault} from 'angular2/src/directives/ng_switch'; | ||
|  | 
 | ||
|  | import {TestBed} from 'angular2/src/test_lib/test_bed'; | ||
|  | 
 | ||
|  | export function main() { | ||
|  |   describe('switch', () => { | ||
|  |     describe('switch value changes', () => { | ||
|  |       it('should switch amongst when values', inject([TestBed, AsyncTestCompleter], (tb, async) => { | ||
|  |            var template = '<div>' + | ||
|  |                           '<ul [ng-switch]="switchValue">' + | ||
|  |                           '<template [ng-switch-when]="\'a\'"><li>when a</li></template>' + | ||
|  |                           '<template [ng-switch-when]="\'b\'"><li>when b</li></template>' + | ||
|  |                           '</ul></div>'; | ||
|  | 
 | ||
|  |            tb.createView(TestComponent, {html: template}) | ||
|  |                .then((view) => { | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual(''); | ||
|  | 
 | ||
|  |                  view.context.switchValue = 'a'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when a'); | ||
|  | 
 | ||
|  |                  view.context.switchValue = 'b'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when b'); | ||
|  | 
 | ||
|  |                  async.done(); | ||
|  |                }); | ||
|  |          })); | ||
|  | 
 | ||
|  |       it('should switch amongst when values with fallback to default', | ||
|  |          inject([TestBed, AsyncTestCompleter], (tb, async) => { | ||
|  |            var template = '<div>' + | ||
|  |                           '<ul [ng-switch]="switchValue">' + | ||
|  |                           '<li template="ng-switch-when \'a\'">when a</li>' + | ||
|  |                           '<li template="ng-switch-default">when default</li>' + | ||
|  |                           '</ul></div>'; | ||
|  | 
 | ||
|  |            tb.createView(TestComponent, {html: template}) | ||
|  |                .then((view) => { | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when default'); | ||
|  | 
 | ||
|  |                  view.context.switchValue = 'a'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when a'); | ||
|  | 
 | ||
|  |                  view.context.switchValue = 'b'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when default'); | ||
|  | 
 | ||
|  |                  async.done(); | ||
|  |                }); | ||
|  |          })); | ||
|  | 
 | ||
|  |       it('should support multiple whens with the same value', | ||
|  |          inject([TestBed, AsyncTestCompleter], (tb, async) => { | ||
|  |            var template = '<div>' + | ||
|  |                           '<ul [ng-switch]="switchValue">' + | ||
|  |                           '<template [ng-switch-when]="\'a\'"><li>when a1;</li></template>' + | ||
|  |                           '<template [ng-switch-when]="\'b\'"><li>when b1;</li></template>' + | ||
|  |                           '<template [ng-switch-when]="\'a\'"><li>when a2;</li></template>' + | ||
|  |                           '<template [ng-switch-when]="\'b\'"><li>when b2;</li></template>' + | ||
|  |                           '<template [ng-switch-default]><li>when default1;</li></template>' + | ||
|  |                           '<template [ng-switch-default]><li>when default2;</li></template>' + | ||
|  |                           '</ul></div>'; | ||
|  | 
 | ||
|  |            tb.createView(TestComponent, {html: template}) | ||
|  |                .then((view) => { | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when default1;when default2;'); | ||
|  | 
 | ||
|  |                  view.context.switchValue = 'a'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when a1;when a2;'); | ||
|  | 
 | ||
|  |                  view.context.switchValue = 'b'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when b1;when b2;'); | ||
|  | 
 | ||
|  |                  async.done(); | ||
|  |                }); | ||
|  |          })); | ||
|  |     }); | ||
|  | 
 | ||
|  |     describe('when values changes', () => { | ||
|  |       it('should switch amongst when values', inject([TestBed, AsyncTestCompleter], (tb, async) => { | ||
|  |            var template = '<div>' + | ||
|  |                           '<ul [ng-switch]="switchValue">' + | ||
|  |                           '<template [ng-switch-when]="when1"><li>when 1;</li></template>' + | ||
|  |                           '<template [ng-switch-when]="when2"><li>when 2;</li></template>' + | ||
|  |                           '<template [ng-switch-default]><li>when default;</li></template>' + | ||
|  |                           '</ul></div>'; | ||
|  | 
 | ||
|  |            tb.createView(TestComponent, {html: template}) | ||
|  |                .then((view) => { | ||
|  |                  view.context.when1 = 'a'; | ||
|  |                  view.context.when2 = 'b'; | ||
|  |                  view.context.switchValue = 'a'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when 1;'); | ||
|  | 
 | ||
|  |                  view.context.switchValue = 'b'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when 2;'); | ||
|  | 
 | ||
|  |                  view.context.switchValue = 'c'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when default;'); | ||
|  | 
 | ||
|  |                  view.context.when1 = 'c'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when 1;'); | ||
|  | 
 | ||
|  |                  view.context.when1 = 'd'; | ||
|  |                  view.detectChanges(); | ||
|  |                  expect(DOM.getText(view.rootNodes[0])).toEqual('when default;'); | ||
|  | 
 | ||
|  |                  async.done(); | ||
|  |                }); | ||
|  |          })); | ||
|  |     }); | ||
|  |   }); | ||
|  | } | ||
|  | 
 | ||
|  | @Component({selector: 'test-cmp'}) | ||
|  | @View({directives: [NgSwitch, NgSwitchWhen, NgSwitchDefault]}) | ||
|  | class TestComponent { | ||
|  |   switchValue: any; | ||
|  |   when1: any; | ||
|  |   when2: any; | ||
|  | 
 | ||
|  |   constructor() { | ||
|  |     this.switchValue = null; | ||
|  |     this.when1 = null; | ||
|  |     this.when2 = null; | ||
|  |   } | ||
|  | } |