/** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import {CommonModule} from '@angular/common'; import {Component} from '@angular/core'; import {ComponentFixture, TestBed, async} from '@angular/core/testing'; import {expect} from '@angular/platform-browser/testing/matchers'; export function main() { describe('NgSwitch', () => { let fixture: ComponentFixture; function getComponent(): TestComponent { return fixture.componentInstance; } function detectChangesAndExpectText(text: string): void { fixture.detectChanges(); expect(fixture.nativeElement).toHaveText(text); } afterEach(() => { fixture = null; }); beforeEach(() => { TestBed.configureTestingModule({ declarations: [TestComponent], imports: [CommonModule], }); }); describe('switch value changes', () => { it('should switch amongst when values', async(() => { const template = '
' + '
'; fixture = createTestComponent(template); detectChangesAndExpectText(''); getComponent().switchValue = 'a'; detectChangesAndExpectText('when a'); getComponent().switchValue = 'b'; detectChangesAndExpectText('when b'); })); it('should switch amongst when values with fallback to default', async(() => { const template = '
' + '
'; fixture = createTestComponent(template); detectChangesAndExpectText('when default'); getComponent().switchValue = 'a'; detectChangesAndExpectText('when a'); getComponent().switchValue = 'b'; detectChangesAndExpectText('when default'); getComponent().switchValue = 'c'; detectChangesAndExpectText('when default'); })); it('should support multiple whens with the same value', async(() => { const template = '
' + '
'; fixture = createTestComponent(template); detectChangesAndExpectText('when default1;when default2;'); getComponent().switchValue = 'a'; detectChangesAndExpectText('when a1;when a2;'); getComponent().switchValue = 'b'; detectChangesAndExpectText('when b1;when b2;'); })); }); describe('when values changes', () => { it('should switch amongst when values', async(() => { const template = '
' + '
'; fixture = createTestComponent(template); getComponent().when1 = 'a'; getComponent().when2 = 'b'; getComponent().switchValue = 'a'; detectChangesAndExpectText('when 1;'); getComponent().switchValue = 'b'; detectChangesAndExpectText('when 2;'); getComponent().switchValue = 'c'; detectChangesAndExpectText('when default;'); getComponent().when1 = 'c'; detectChangesAndExpectText('when 1;'); getComponent().when1 = 'd'; detectChangesAndExpectText('when default;'); })); }); }); } @Component({selector: 'test-cmp', template: ''}) class TestComponent { switchValue: any = null; when1: any = null; when2: any = null; } function createTestComponent(template: string): ComponentFixture { return TestBed.overrideComponent(TestComponent, {set: {template: template}}) .createComponent(TestComponent); }