111639: Fixed search settings not using the scope

This commit is contained in:
Alexandre Vryghem
2024-02-03 13:39:31 +01:00
parent 22e87a5f5a
commit 93b22cba1f
4 changed files with 21 additions and 48 deletions

View File

@@ -1,4 +1,3 @@
import { SearchService } from '../../../core/shared/search/search.service';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { SearchSettingsComponent } from './search-settings.component'; import { SearchSettingsComponent } from './search-settings.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
@@ -6,15 +5,11 @@ import { PaginationComponentOptions } from '../../pagination/pagination-componen
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { ActivatedRoute } from '@angular/router';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { EnumKeysPipe } from '../../utils/enum-keys-pipe'; import { EnumKeysPipe } from '../../utils/enum-keys-pipe';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { SearchFilterService } from '../../../core/shared/search/search-filter.service';
import { VarDirective } from '../../utils/var.directive'; import { VarDirective } from '../../utils/var.directive';
import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-page.component'; import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-page.component';
import { SidebarService } from '../../sidebar/sidebar.service';
import { SidebarServiceStub } from '../../testing/sidebar-service.stub';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../testing/pagination-service.stub'; import { PaginationServiceStub } from '../../testing/pagination-service.stub';
@@ -22,32 +17,23 @@ describe('SearchSettingsComponent', () => {
let comp: SearchSettingsComponent; let comp: SearchSettingsComponent;
let fixture: ComponentFixture<SearchSettingsComponent>; let fixture: ComponentFixture<SearchSettingsComponent>;
let searchServiceObject: SearchService;
let pagination: PaginationComponentOptions; let pagination: PaginationComponentOptions;
let sort: SortOptions; let sort: SortOptions;
let mockResults;
let searchServiceStub;
let queryParam; let queryParam;
let scopeParam; let scopeParam;
let paginatedSearchOptions; let paginatedSearchOptions;
let paginationService; let paginationService: PaginationServiceStub;
let activatedRouteStub;
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(async () => {
pagination = new PaginationComponentOptions(); pagination = new PaginationComponentOptions();
pagination.id = 'search-results-pagination'; pagination.id = 'search-results-pagination';
pagination.currentPage = 1; pagination.currentPage = 1;
pagination.pageSize = 10; pagination.pageSize = 10;
sort = new SortOptions('score', SortDirection.DESC); sort = new SortOptions('score', SortDirection.DESC);
mockResults = ['test', 'data'];
searchServiceStub = {
searchOptions: { pagination: pagination, sort: sort },
search: () => mockResults,
};
queryParam = 'test query'; queryParam = 'test query';
scopeParam = '7669c72a-3f2a-451f-a3b9-9210e7a4c02f'; scopeParam = '7669c72a-3f2a-451f-a3b9-9210e7a4c02f';
@@ -58,30 +44,12 @@ describe('SearchSettingsComponent', () => {
sort, sort,
}; };
activatedRouteStub = {
queryParams: observableOf({
query: queryParam,
scope: scopeParam,
}),
};
paginationService = new PaginationServiceStub(pagination, sort); paginationService = new PaginationServiceStub(pagination, sort);
TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([])], imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([])],
declarations: [SearchSettingsComponent, EnumKeysPipe, VarDirective], declarations: [SearchSettingsComponent, EnumKeysPipe, VarDirective],
providers: [ providers: [
{ provide: SearchService, useValue: searchServiceStub },
{ provide: ActivatedRoute, useValue: activatedRouteStub },
{
provide: SidebarService,
useValue: SidebarServiceStub,
},
{
provide: SearchFilterService,
useValue: {},
},
{ {
provide: PaginationService, provide: PaginationService,
useValue: paginationService, useValue: paginationService,
@@ -111,10 +79,7 @@ describe('SearchSettingsComponent', () => {
// SearchPageComponent test instance // SearchPageComponent test instance
fixture.detectChanges(); fixture.detectChanges();
searchServiceObject = (comp as any).service;
spyOn(comp, 'reloadOrder'); spyOn(comp, 'reloadOrder');
spyOn(searchServiceObject, 'search').and.callThrough();
}); });
it('it should show the order settings with the respective selectable options', () => { it('it should show the order settings with the respective selectable options', () => {

View File

@@ -1,7 +1,5 @@
import { Component, Inject, Input } from '@angular/core'; import { Component, Inject, Input } from '@angular/core';
import { SearchService } from '../../../core/shared/search/search.service';
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
import { ActivatedRoute, Router } from '@angular/router';
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service'; import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-page.component'; import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-page.component';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
@@ -26,11 +24,10 @@ export class SearchSettingsComponent {
*/ */
@Input() sortOptionsList: SortOptions[]; @Input() sortOptionsList: SortOptions[];
constructor(private service: SearchService, constructor(
private route: ActivatedRoute, protected paginationService: PaginationService,
private router: Router, @Inject(SEARCH_CONFIG_SERVICE) public searchConfigurationService: SearchConfigurationService,
private paginationService: PaginationService, ) {
@Inject(SEARCH_CONFIG_SERVICE) public searchConfigurationService: SearchConfigurationService) {
} }
/** /**

View File

@@ -315,9 +315,8 @@ export class SearchComponent implements OnDestroy, OnInit {
// Determinate PaginatedSearchOptions and listen to any update on it // Determinate PaginatedSearchOptions and listen to any update on it
const configuration$: Observable<string> = this.searchConfigService const configuration$: Observable<string> = this.searchConfigService
.getCurrentConfiguration(this.configuration).pipe(distinctUntilChanged()); .getCurrentConfiguration(this.configuration).pipe(distinctUntilChanged());
const searchSortOptions$: Observable<SortOptions[]> = configuration$.pipe( const searchSortOptions$: Observable<SortOptions[]> = combineLatest([configuration$, this.currentScope$]).pipe(
switchMap((configuration: string) => this.searchConfigService switchMap(([configuration, scope]: [string, string]) => this.searchConfigService.getConfigurationSearchConfig(configuration, scope)),
.getConfigurationSearchConfig(configuration)),
map((searchConfig: SearchConfig) => this.searchConfigService.getConfigurationSortOptions(searchConfig)), map((searchConfig: SearchConfig) => this.searchConfigService.getConfigurationSortOptions(searchConfig)),
distinctUntilChanged() distinctUntilChanged()
); );

View File

@@ -3888,6 +3888,18 @@
"sorting.lastModified.DESC": "Last modified Descending", "sorting.lastModified.DESC": "Last modified Descending",
"sorting.person.familyName.ASC": "Surname Ascending",
"sorting.person.familyName.DESC": "Surname Descending",
"sorting.person.givenName.ASC": "Name Ascending",
"sorting.person.givenName.DESC": "Name Descending",
"sorting.person.birthDate.ASC": "Birth Date Ascending",
"sorting.person.birthDate.DESC": "Birth Date Descending",
"statistics.title": "Statistics", "statistics.title": "Statistics",
"statistics.header": "Statistics for {{ scope }}", "statistics.header": "Statistics for {{ scope }}",