76922: Add unit tests for ConfigurationSearchPageComponent

This commit is contained in:
Yura Bondarenko
2021-02-15 12:39:49 +01:00
parent 4f0a630e87
commit fd11ab3751
2 changed files with 50 additions and 7 deletions

View File

@@ -2,20 +2,63 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { configureSearchComponentTestingModule } from './search.component.spec'; import { configureSearchComponentTestingModule } from './search.component.spec';
import { ConfigurationSearchPageComponent } from './configuration-search-page.component'; import { ConfigurationSearchPageComponent } from './configuration-search-page.component';
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service'; import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
import { Component, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { RouteService } from '../core/services/route.service';
import createSpy = jasmine.createSpy;
const CONFIGURATION = 'test-configuration';
const QUERY = 'test query';
@Component({
template: `
<ds-configuration-search-page [configuration]="'${CONFIGURATION}'"
[fixedFilterQuery]="'${QUERY}'"
#configurationSearchPage>
</ds-configuration-search-page>
`,
})
class HostComponent {
@ViewChild('configurationSearchPage') configurationSearchPage: ConfigurationSearchPageComponent;
}
describe('ConfigurationSearchPageComponent', () => { describe('ConfigurationSearchPageComponent', () => {
let comp: ConfigurationSearchPageComponent; let comp: ConfigurationSearchPageComponent;
let fixture: ComponentFixture<ConfigurationSearchPageComponent>; let fixture: ComponentFixture<HostComponent>;
let searchConfigService: SearchConfigurationService; let searchConfigService: SearchConfigurationService;
let routeService: RouteService;
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
configureSearchComponentTestingModule(ConfigurationSearchPageComponent); configureSearchComponentTestingModule(ConfigurationSearchPageComponent, [HostComponent]);
})); }));
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(ConfigurationSearchPageComponent); fixture = TestBed.createComponent(HostComponent);
comp = fixture.componentInstance;
searchConfigService = (comp as any).searchConfigService; // 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');
fixture.detectChanges(); 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);
});
it('should reset route parameters on destroy', () => {
fixture.destroy();
expect(routeService.setParameter).toHaveBeenCalledWith('configuration', undefined);
expect(routeService.setParameter).toHaveBeenCalledWith('fixedFilterQuery', undefined);
}); });
}); });

View File

@@ -84,10 +84,10 @@ const routeServiceStub = {
} }
}; };
export function configureSearchComponentTestingModule(compType) { export function configureSearchComponentTestingModule(compType, additionalDeclarations: any[] = []) {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), NoopAnimationsModule, NgbCollapseModule], imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), NoopAnimationsModule, NgbCollapseModule],
declarations: [compType], declarations: [compType, ...additionalDeclarations],
providers: [ providers: [
{ provide: SearchService, useValue: searchServiceStub }, { provide: SearchService, useValue: searchServiceStub },
{ {