import { Component, ViewChild, } from '@angular/core'; import { ComponentFixture, TestBed, waitForAsync, } from '@angular/core/testing'; import { Router } from '@angular/router'; import { of } from 'rxjs'; import { RouteService } from '../core/services/route.service'; import { SearchConfigurationService } from '../core/shared/search/search-configuration.service'; import { configureSearchComponentTestingModule } from '../shared/search/search.component.spec'; import { ConfigurationSearchPageComponent } from './configuration-search-page.component'; import createSpy = jasmine.createSpy; const CONFIGURATION = 'test-configuration'; const QUERY = 'test query'; @Component({ template: ` <ds-base-configuration-search-page [configuration]="'${CONFIGURATION}'" [fixedFilterQuery]="'${QUERY}'" #configurationSearchPage> </ds-base-configuration-search-page> `, imports: [ ConfigurationSearchPageComponent, ], standalone: true, }) class HostComponent { @ViewChild('configurationSearchPage') configurationSearchPage: ConfigurationSearchPageComponent; } describe('ConfigurationSearchPageComponent', () => { let comp: ConfigurationSearchPageComponent; let fixture: ComponentFixture<HostComponent>; let searchConfigService: SearchConfigurationService; let routeService: RouteService; beforeEach(waitForAsync(() => { configureSearchComponentTestingModule(ConfigurationSearchPageComponent, [HostComponent]); })); beforeEach(() => { fixture = TestBed.createComponent(HostComponent); // Set router url to a dummy value for SearchComponent#ngOnInit spyOnProperty(TestBed.inject(Router), 'url', 'get').and.returnValue('some/url/here'); routeService = TestBed.inject(RouteService); routeService.setParameter = createSpy('setParameter'); routeService.getRouteParameterValue = createSpy('getRouteParameterValue').and.returnValue(of(CONFIGURATION)); fixture.detectChanges(); comp = fixture.componentInstance.configurationSearchPage; searchConfigService = (comp as any).searchConfigService; }); it('should set route parameters on init', () => { expect(comp.configuration).toBe(CONFIGURATION); expect(comp.fixedFilterQuery).toBe(QUERY); expect(routeService.setParameter).toHaveBeenCalledWith('configuration', CONFIGURATION); expect(routeService.setParameter).toHaveBeenCalledWith('fixedFilterQuery', QUERY); }); });