ipsos-components
Version:
Material Design components for Angular
172 lines (133 loc) • 5.5 kB
text/typescript
import {Direction, Directionality} from '@angular/cdk/bidi';
import {PortalModule, TemplatePortal} from '@angular/cdk/portal';
import {CommonModule} from '@angular/common';
import {Component, TemplateRef, ViewChild, ViewContainerRef} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {MatRippleModule} from '@angular/material/core';
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
import {MatTabBody, MatTabBodyPortal} from './tab-body';
describe('MatTabBody', () => {
let dir: Direction = 'ltr';
beforeEach(async(() => {
dir = 'ltr';
TestBed.configureTestingModule({
imports: [CommonModule, PortalModule, MatRippleModule, NoopAnimationsModule],
declarations: [
MatTabBody,
MatTabBodyPortal,
SimpleTabBodyApp,
],
providers: [
{provide: Directionality, useFactory: () => ({value: dir})}
]
});
TestBed.compileComponents();
}));
describe('when initialized as center', () => {
let fixture: ComponentFixture<SimpleTabBodyApp>;
describe('in LTR direction', () => {
beforeEach(() => {
dir = 'ltr';
fixture = TestBed.createComponent(SimpleTabBodyApp);
});
it('should be center position without origin', () => {
fixture.componentInstance.position = 0;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('center');
});
it('should be left-origin-center position with negative or zero origin', () => {
fixture.componentInstance.position = 0;
fixture.componentInstance.origin = 0;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('left-origin-center');
});
it('should be right-origin-center position with positive nonzero origin', () => {
fixture.componentInstance.position = 0;
fixture.componentInstance.origin = 1;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('right-origin-center');
});
});
describe('in RTL direction', () => {
beforeEach(() => {
dir = 'rtl';
fixture = TestBed.createComponent(SimpleTabBodyApp);
});
it('should be right-origin-center position with negative or zero origin', () => {
fixture.componentInstance.position = 0;
fixture.componentInstance.origin = 0;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('right-origin-center');
});
it('should be left-origin-center position with positive nonzero origin', () => {
fixture.componentInstance.position = 0;
fixture.componentInstance.origin = 1;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('left-origin-center');
});
});
});
describe('should properly set the position in LTR', () => {
let fixture: ComponentFixture<SimpleTabBodyApp>;
beforeEach(() => {
dir = 'ltr';
fixture = TestBed.createComponent(SimpleTabBodyApp);
fixture.detectChanges();
});
it('to be left position with negative position', () => {
fixture.componentInstance.position = -1;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('left');
});
it('to be center position with zero position', () => {
fixture.componentInstance.position = 0;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('center');
});
it('to be left position with positive position', () => {
fixture.componentInstance.position = 1;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('right');
});
});
describe('should properly set the position in RTL', () => {
let fixture: ComponentFixture<SimpleTabBodyApp>;
beforeEach(() => {
dir = 'rtl';
fixture = TestBed.createComponent(SimpleTabBodyApp);
fixture.detectChanges();
});
it('to be right position with negative position', () => {
fixture.componentInstance.position = -1;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('right');
});
it('to be center position with zero position', () => {
fixture.componentInstance.position = 0;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('center');
});
it('to be left position with positive position', () => {
fixture.componentInstance.position = 1;
fixture.detectChanges();
expect(fixture.componentInstance.tabBody._position).toBe('left');
});
});
});
({
template: `
<ng-template>Tab Body Content</ng-template>
<mat-tab-body [content]="content" [position]="position" [origin]="origin"></mat-tab-body>
`
})
class SimpleTabBodyApp {
content: TemplatePortal<any>;
position: number;
origin: number;
(MatTabBody) tabBody: MatTabBody;
(TemplateRef) template: TemplateRef<any>;
constructor(private _viewContainerRef: ViewContainerRef) { }
ngAfterContentInit() {
this.content = new TemplatePortal(this.template, this._viewContainerRef);
}
}