import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { AccordionModule } from 'ngx-bootstrap'; import { DatasetTabsComponent } from './dataset-tabs.component'; import { Project, Dataset, Family } from '../../../metamodel/model'; import { PROJECT_LIST, DATASET_LIST, DATASET_FAMILY_LIST, DATASET } from '../../../../settings/test-data'; describe('[Search][Dataset] Component: DatasetTabsComponent', () => { @Component({ selector: `app-host`, template: ` <app-dataset-tabs [projectList]="projectList" [datasetList]="datasetList" [datasetFamilyList]="datasetFamilyList" [datasetSelected]="datasetSelected"> </app-dataset-tabs> ` }) class TestHostComponent { @ViewChild(DatasetTabsComponent, { static: false }) public testedComponent: DatasetTabsComponent; private projectList: Project[] = PROJECT_LIST; private datasetList: Dataset[] = DATASET_LIST; private datasetFamilyList: Family[] = DATASET_FAMILY_LIST; private datasetSelected = 'cat_1'; } @Component({ selector: 'app-dataset-card', template: '' }) class DatasetCardStubComponent { @Input() project: Project; @Input() dataset: Dataset; @Input() datasetSelected: string; @Output() select: EventEmitter<string> = new EventEmitter(); } let testHostComponent: TestHostComponent; let testHostFixture: ComponentFixture<TestHostComponent>; let testedComponent: DatasetTabsComponent; beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ DatasetTabsComponent, TestHostComponent, DatasetCardStubComponent ], imports: [AccordionModule.forRoot(), BrowserAnimationsModule] }); testHostFixture = TestBed.createComponent(TestHostComponent); testHostComponent = testHostFixture.componentInstance; testHostFixture.detectChanges(); testedComponent = testHostComponent.testedComponent; })); it('should create the component', () => { expect(testedComponent).toBeTruthy(); }); it('#getDatasetListByFamily(idFamily) should filter datasets by idFamily', () => { const filteredDatasetList: Dataset[] = testedComponent.getDatasetListByFamily(1); expect(filteredDatasetList.length).toBe(1); expect(filteredDatasetList[0].name).toBe('cat_1'); }); it('#getProject(dataset) should return the dataset project', () => { const project = testedComponent.getProject(DATASET); expect(project.name).toBe('project_1'); }); });