Skip to content
Snippets Groups Projects
dataset-tabs.component.spec.ts 2.84 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { async, ComponentFixture, TestBed } from '@angular/core/testing';
    
    import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
    
    François Agneray's avatar
    François Agneray committed
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
    
    François Agneray's avatar
    François Agneray committed
    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
                ],
    
    François Agneray's avatar
    François Agneray committed
                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');
        });
    });