// import { async, ComponentFixture, TestBed } from '@angular/core/testing';
// import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
//
// import { DatasetListComponent } from './output-by-family.component';
// import { Attribute, Family, Category } from '../../../metamodel/model';
// import { ATTRIBUTE_LIST, OUTPUT_FAMILY, CATEGORY_LIST } from '../../../../settings/test-data';
//
// describe('[Search][Output] Component: OutputByFamilyComponent', () => {
//     @Component({
//         selector: `app-host`,
//         template: `
//             <app-output-by-family
//                 [outputFamily]="outputFamily"
//                 [datasetAttributeList]="datasetAttributeList"
//                 [categoryList]="categoryList"
//                 [outputList]="outputList">
//             </app-output-by-family>`
//     })
//     class TestHostComponent {
//         @ViewChild(DatasetListComponent, { static: false })
//         public testedComponent: DatasetListComponent;
//         public outputFamily: Family = OUTPUT_FAMILY;
//         public datasetAttributeList: Attribute[] = ATTRIBUTE_LIST;
//         public categoryList: Category[] = CATEGORY_LIST;
//         public outputList: number[] = [1];
//     }
//
//     @Component({ selector: 'app-output-by-category', template: '' })
//     class OutputByCategoryStubComponent {
//         @Input() categoryLabel: string;
//         @Input() attributeList: Attribute[];
//         @Input() outputList: number[];
//         @Input() isAllSelected: boolean;
//         @Input() isAllUnselected: boolean;
//         @Output() change: EventEmitter<number[]> = new EventEmitter();
//     }
//
//     let testHostComponent: TestHostComponent;
//     let testHostFixture: ComponentFixture<TestHostComponent>;
//     let testedComponent: DatasetListComponent;
//
//     beforeEach(async(() => {
//         TestBed.configureTestingModule({
//             declarations: [
//                 DatasetListComponent,
//                 TestHostComponent,
//                 OutputByCategoryStubComponent
//             ]
//         });
//         testHostFixture = TestBed.createComponent(TestHostComponent);
//         testHostComponent = testHostFixture.componentInstance;
//         testHostFixture.detectChanges();
//         testedComponent = testHostComponent.testedComponent;
//     }));
//
//     it('should create the component', () => {
//         expect(testedComponent).toBeTruthy();
//     });
//
//     it('#getCategoryByFamilySortedByDisplay(idFamily) should sort by display categories belonging to idFamily', () => {
//         const sortedCategoryList: Category[] = testedComponent.getCategoryByFamilySortedByDisplay(1);
//         expect(sortedCategoryList.length).toBe(2);
//         expect(sortedCategoryList[0].id).toBe(2);
//         expect(sortedCategoryList[1].id).toBe(1);
//     });
//
//     it('#getAttributeByCategory(idCategory) should return attributes belonging to idCategory', () => {
//         expect(testedComponent.getAttributeByCategory(1).length).toBe(1);
//         expect(testedComponent.getAttributeByCategory(1)[0].id).toBe(1);
//     });
//
//     it('#getIsAllSelected(idCategory) should return true if all outputs of idCategory are selected', () => {
//         expect(testedComponent.getIsAllSelected(1)).toBeTruthy();
//     });
//
//     it('#getIsAllSelected(idCategory) should return false if not all outputs of idCategory are selected', () => {
//         testedComponent.outputList = [];
//         expect(testedComponent.getIsAllSelected(1)).toBeFalsy();
//     });
//
//     it('#getIsAllUnselected(idCategory) should return true if all outputs of idCategory are not selected', () => {
//         testedComponent.outputList = [];
//         expect(testedComponent.getIsAllUnselected(1)).toBeTruthy();
//     });
//
//     it('#getIsAllUnselected(idCategory) should return false if not all outputs of idCategory are not selected', () => {
//         expect(testedComponent.getIsAllUnselected(1)).toBeFalsy();
//     });
//
//     it('#emitChange(outputList) should raise change event', () => {
//         const expectedOutputList = [1];
//         testedComponent.change.subscribe((event: number[]) => expect(event).toEqual(expectedOutputList));
//         testedComponent.emitChange([1]);
//     });
// });
//