diff --git a/src/app/+search-page/search-filters/search-filter/search-fixed-filter.service.spec.ts b/src/app/+search-page/search-filters/search-filter/search-fixed-filter.service.spec.ts index a201d37d48..37a386d51a 100644 --- a/src/app/+search-page/search-filters/search-filter/search-fixed-filter.service.spec.ts +++ b/src/app/+search-page/search-filters/search-filter/search-fixed-filter.service.spec.ts @@ -1,17 +1,15 @@ -import { SearchFixedFilterService } from './search-fixed-filter.service'; -import { RouteService } from '../../../core/services/route.service'; -import { RequestService } from '../../../core/data/request.service'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { of as observableOf } from 'rxjs'; -import { RequestEntry } from '../../../core/data/request.reducer'; -import { FilteredDiscoveryQueryResponse, RestResponse } from '../../../core/cache/response.models'; +import {SearchFixedFilterService} from './search-fixed-filter.service'; +import {RequestService} from '../../../core/data/request.service'; +import {HALEndpointService} from '../../../core/shared/hal-endpoint.service'; +import {of as observableOf} from 'rxjs'; +import {RequestEntry} from '../../../core/data/request.reducer'; +import {FilteredDiscoveryQueryResponse} from '../../../core/cache/response.models'; describe('SearchFixedFilterService', () => { let service: SearchFixedFilterService; const filterQuery = 'filter:query'; - const routeServiceStub = {} as RouteService; const requestServiceStub = Object.assign({ /* tslint:disable:no-empty */ configure: () => {}, @@ -26,7 +24,7 @@ describe('SearchFixedFilterService', () => { }); beforeEach(() => { - service = new SearchFixedFilterService(routeServiceStub, requestServiceStub, halServiceStub); + service = new SearchFixedFilterService(requestServiceStub, halServiceStub); }); describe('when getQueryByFilterName is called with a filterName', () => { diff --git a/src/app/+search-page/search-labels/search-label/search-label.component.spec.ts b/src/app/+search-page/search-labels/search-label/search-label.component.spec.ts new file mode 100644 index 0000000000..329c286ce3 --- /dev/null +++ b/src/app/+search-page/search-labels/search-label/search-label.component.spec.ts @@ -0,0 +1,87 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { TranslateModule } from '@ngx-translate/core'; +import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { Observable, of as observableOf } from 'rxjs'; +import { Params } from '@angular/router'; +import {SearchLabelComponent} from './search-label.component'; +import {ObjectKeysPipe} from '../../../shared/utils/object-keys-pipe'; +import {SearchService} from '../../search-service/search.service'; +import {SEARCH_CONFIG_SERVICE} from '../../../+my-dspace-page/my-dspace-page.component'; +import {SearchServiceStub} from '../../../shared/testing/search-service-stub'; +import {SearchConfigurationServiceStub} from '../../../shared/testing/search-configuration-service-stub'; + +describe('SearchLabelComponent', () => { + let comp: SearchLabelComponent; + let fixture: ComponentFixture; + + const searchLink = '/search'; + let searchService; + + const key1 = 'author'; + const key2 = 'subject'; + const value1 = 'Test, Author'; + const normValue1 = 'Test, Author'; + const value2 = 'TestSubject'; + const value3 = 'Test, Authority,authority'; + const normValue3 = 'Test, Authority'; + const filter1 = [key1, value1]; + const filter2 = [key2, value2]; + const mockFilters = [ + filter1, + filter2 + ]; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule], + declarations: [SearchLabelComponent, ObjectKeysPipe], + providers: [ + { provide: SearchService, useValue: new SearchServiceStub(searchLink) }, + { provide: SEARCH_CONFIG_SERVICE, useValue: new SearchConfigurationServiceStub() } + // { provide: SearchConfigurationService, useValue: {getCurrentFrontendFilters : () => observableOf({})} } + ], + schemas: [NO_ERRORS_SCHEMA] + }).overrideComponent(SearchLabelComponent, { + set: { changeDetection: ChangeDetectionStrategy.Default } + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SearchLabelComponent); + comp = fixture.componentInstance; + searchService = (comp as any).searchService; + comp.key = key1; + comp.value = value1; + (comp as any).appliedFilters = observableOf(mockFilters); + fixture.detectChanges(); + }); + + describe('when getRemoveParams is called', () => { + let obs: Observable; + + beforeEach(() => { + obs = comp.getRemoveParams(); + }); + + it('should return all params but the provided filter', () => { + obs.subscribe((params) => { + // Should contain only filter2 and page: length == 2 + expect(Object.keys(params).length).toBe(2); + }); + }) + }); + + describe('when normalizeFilterValue is called', () => { + it('should return properly filter value', () => { + let result: string; + + result = comp.normalizeFilterValue(value1); + expect(result).toBe(normValue1); + + result = comp.normalizeFilterValue(value3); + expect(result).toBe(normValue3); + }) + }); +}); diff --git a/src/app/+search-page/search-labels/search-labels.component.spec.ts b/src/app/+search-page/search-labels/search-labels.component.spec.ts index d28698764c..5a554e42d6 100644 --- a/src/app/+search-page/search-labels/search-labels.component.spec.ts +++ b/src/app/+search-page/search-labels/search-labels.component.spec.ts @@ -1,16 +1,14 @@ -import { SearchLabelsComponent } from './search-labels.component'; -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { TranslateModule } from '@ngx-translate/core'; -import { SearchService } from '../search-service/search.service'; -import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { SearchServiceStub } from '../../shared/testing/search-service-stub'; -import { Observable, of as observableOf } from 'rxjs'; -import { Params } from '@angular/router'; -import { ObjectKeysPipe } from '../../shared/utils/object-keys-pipe'; -import { SEARCH_CONFIG_SERVICE } from '../../+my-dspace-page/my-dspace-page.component'; -import { SearchConfigurationServiceStub } from '../../shared/testing/search-configuration-service-stub'; +import {SearchLabelsComponent} from './search-labels.component'; +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; +import {TranslateModule} from '@ngx-translate/core'; +import {SearchService} from '../search-service/search.service'; +import {ChangeDetectionStrategy, NO_ERRORS_SCHEMA} from '@angular/core'; +import {FormsModule} from '@angular/forms'; +import {SearchServiceStub} from '../../shared/testing/search-service-stub'; +import {of as observableOf} from 'rxjs'; +import {ObjectKeysPipe} from '../../shared/utils/object-keys-pipe'; +import {SEARCH_CONFIG_SERVICE} from '../../+my-dspace-page/my-dspace-page.component'; describe('SearchLabelsComponent', () => { let comp: SearchLabelsComponent; @@ -22,10 +20,7 @@ describe('SearchLabelsComponent', () => { const field1 = 'author'; const field2 = 'subject'; const value1 = 'Test, Author'; - const normValue1 = 'Test, Author'; const value2 = 'TestSubject'; - const value3 = 'Test, Authority,authority'; - const normValue3 = 'Test, Authority'; const filter1 = [field1, value1]; const filter2 = [field2, value2]; const mockFilters = [ @@ -39,8 +34,7 @@ describe('SearchLabelsComponent', () => { declarations: [SearchLabelsComponent, ObjectKeysPipe], providers: [ { provide: SearchService, useValue: new SearchServiceStub(searchLink) }, - { provide: SEARCH_CONFIG_SERVICE, useValue: new SearchConfigurationServiceStub() } - // { provide: SearchConfigurationService, useValue: {getCurrentFrontendFilters : () => observableOf({})} } + { provide: SEARCH_CONFIG_SERVICE, useValue: {getCurrentFrontendFilters : () => observableOf(mockFilters)} } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(SearchLabelsComponent, { @@ -56,30 +50,11 @@ describe('SearchLabelsComponent', () => { fixture.detectChanges(); }); - describe('when getRemoveParams is called', () => { - let obs: Observable; - - beforeEach(() => { - obs = comp.getRemoveParams(filter1[0], filter1[1]); - }); - + describe('when the component has been initialized', () => { it('should return all params but the provided filter', () => { - obs.subscribe((params) => { - // Should contain only filter2 and page: length == 2 - expect(Object.keys(params).length).toBe(2); + comp.appliedFilters.subscribe((filters) => { + expect(filters).toBe(mockFilters); }); }) }); - - describe('when normalizeFilterValue is called', () => { - it('should return properly filter value', () => { - let result: string; - - result = comp.normalizeFilterValue(value1); - expect(result).toBe(normValue1); - - result = comp.normalizeFilterValue(value3); - expect(result).toBe(normValue3); - }) - }); }); diff --git a/src/app/+search-page/search-page.component.spec.ts b/src/app/+search-page/search-page.component.spec.ts index 2bc3d4071d..9ed5bb8590 100644 --- a/src/app/+search-page/search-page.component.spec.ts +++ b/src/app/+search-page/search-page.component.spec.ts @@ -200,7 +200,7 @@ describe('SearchPageComponent', () => { beforeEach(() => { menu = fixture.debugElement.query(By.css('#search-sidebar-sm')).nativeElement; - comp.isSidebarCollapsed = () => observableOf(true); + (comp as any).isSidebarCollapsed$ = observableOf(true); fixture.detectChanges(); }); @@ -215,7 +215,7 @@ describe('SearchPageComponent', () => { beforeEach(() => { menu = fixture.debugElement.query(By.css('#search-sidebar-sm')).nativeElement; - comp.isSidebarCollapsed = () => observableOf(false); + (comp as any).isSidebarCollapsed$ = observableOf(false); fixture.detectChanges(); });