import {ComponentFixture, TestBed} from '@angular/core/testing'; import {HttpClientTestingModule} from '@angular/common/http/testing'; import {CUSTOM_ELEMENTS_SCHEMA} from "@angular/core"; import {SearchComponent} from "./search.component"; import {FormsModule, ReactiveFormsModule} from "@angular/forms"; describe('Spinner component', () => { let component: SearchComponent; let fixture: ComponentFixture; beforeAll(done => (async () => { TestBed.configureTestingModule({ imports: [FormsModule, ReactiveFormsModule, HttpClientTestingModule], providers: [], declarations: [SearchComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA] }); await TestBed.compileComponents(); fixture = TestBed.createComponent(SearchComponent); component = fixture.componentInstance; fixture.detectChanges(); })().then(done).catch(done.fail)); test('component should be defined', () => { expect(component).toBeDefined(); }); test('searchTree should return all nodes that include some text: with text', () => { component.nodes = [ { name: 'name_1' }, { name: 'name_2' }, { name: 'name_3' }, { name: 'name_3' }]; jest.spyOn(component.updateNodes, 'emit'); spyOn(component, 'expandParentByNodeId').and.stub(); component.searchTree('name_1'); expect(component.updateNodes.emit).toHaveBeenCalledWith({ nodes: [ { name: 'name_1' }, { name: 'name_2' }, { name: 'name_3' }, { name: 'name_3' }], filterValue: 'name_1' }); }); test('searchTree should return all nodes that include some text: without text', () => { component.nodes = [ { name: 'name_1', children: [ { name: 'name_child_1' } ] }, { name: 'name_2' }, { name: 'name_3' }, { name: 'name_4' }]; jest.spyOn(component.updateNodes, 'emit'); spyOn(component, 'expandParentByNodeId').and.stub(); component.searchTree(''); expect(component.updateNodes.emit).toHaveBeenCalled(); }); });