import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; import { HierarchicalSidePanel } from './hierarchical.side.panel.component'; import { FilterHierarchyPipe } from './filter.hierarchy.pipe'; import { EventEmitter } from '@angular/core'; import { HIERARCHICAL_SIDE_PANEL_DATA } from 'projects/esp-common/src/lib/mockup'; import { FormsModule } from '@angular/forms'; describe('HierarchicalSidePanel', () => { let component: HierarchicalSidePanel; let fixture: ComponentFixture; beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [HierarchicalSidePanel, FilterHierarchyPipe], imports: [FormsModule], }).compileComponents(); })); beforeEach(() => { fixture = TestBed.createComponent(HierarchicalSidePanel); component = fixture.componentInstance; component.data = [HIERARCHICAL_SIDE_PANEL_DATA[0], HIERARCHICAL_SIDE_PANEL_DATA[1]]; component.selectedParent = null; component.selectedChild = null; component.childSelectionEvent = new EventEmitter(); component.searchValue = ''; fixture.detectChanges(); }); it('should call ngOnInit', () => { component.childSelectionEvent.emit = jest.fn(); component.ngOnInit(); expect(component.selectedParent).toStrictEqual({ ...HIERARCHICAL_SIDE_PANEL_DATA[0] }); expect(component.selectedChild).toStrictEqual({ ...HIERARCHICAL_SIDE_PANEL_DATA[0].children[0] }); expect(component.childSelectionEvent.emit).toHaveBeenCalled(); }); it('should call initializePanel', () => { const { selectedParent, selectedChild } = component.initializePanel(component.data); expect(selectedParent).toStrictEqual({ ...HIERARCHICAL_SIDE_PANEL_DATA[0] }); expect(selectedChild).toStrictEqual({ ...HIERARCHICAL_SIDE_PANEL_DATA[0].children[0] }); }); it('should call focusInput', () => { component.searchField = { nativeElement: { focus: jest.fn() } }; component.focusInput(); expect(component.searchField.nativeElement.focus).toHaveBeenCalled(); }); it('should call toggleAccordianView', () => { const event = { stopPropagation: jest.fn() }; component.toggleAccordianView(HIERARCHICAL_SIDE_PANEL_DATA[0], event); expect(event.stopPropagation).toHaveBeenCalled(); expect(component.data[0].selected).toBeFalsy(); }); it('should call manageDataForParentLevelSelection', () => { const managedData = component.manageDataForParentLevelSelection(HIERARCHICAL_SIDE_PANEL_DATA[0]); expect(managedData[0].selected).toBeFalsy(); }); it('should call childSelection', () => { const event = { stopPropagation: jest.fn() }; component.childSelectionEvent.emit = jest.fn(); // scenario 1 component.selectedChild = HIERARCHICAL_SIDE_PANEL_DATA[0].children[0]; component.selectedParent = HIERARCHICAL_SIDE_PANEL_DATA[0]; component.childSelection(HIERARCHICAL_SIDE_PANEL_DATA[0].children[0], event); expect(event.stopPropagation).toHaveBeenCalled(); // scenario 2 component.childSelection(HIERARCHICAL_SIDE_PANEL_DATA[0].children[1], event); expect(event.stopPropagation).toHaveBeenCalled(); expect(component.childSelectionEvent.emit).toHaveBeenCalled(); }); it('should call manageDataForChildLevelSelection', () => { const newData = component.manageDataForChildLevelSelection( HIERARCHICAL_SIDE_PANEL_DATA[0], HIERARCHICAL_SIDE_PANEL_DATA[0].children[1] ); expect(newData[0].children[0].selected).toBeFalsy(); expect(newData[0].children[1].selected).toBeTruthy(); }); it('should create', () => { expect(component).toBeTruthy(); }); });