76654: Implement feedback

This commit is contained in:
Yana De Pauw
2021-03-29 15:31:27 +02:00
parent 659117dfbd
commit afe345ebac
47 changed files with 203 additions and 431 deletions

View File

@@ -28,6 +28,7 @@ import { RequestService } from '../../../core/data/request.service';
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
describe('EPeopleRegistryComponent', () => { describe('EPeopleRegistryComponent', () => {
let component: EPeopleRegistryComponent; let component: EPeopleRegistryComponent;
@@ -121,15 +122,7 @@ describe('EPeopleRegistryComponent', () => {
builderService = getMockFormBuilderService(); builderService = getMockFormBuilderService();
translateService = getMockTranslateService(); translateService = getMockTranslateService();
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule, imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule,
TranslateModule.forRoot({ TranslateModule.forRoot({

View File

@@ -70,11 +70,6 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
currentSearchQuery: string; currentSearchQuery: string;
currentSearchScope: string; currentSearchScope: string;
/**
* The subscription for the search method
*/
searchSub: Subscription;
/** /**
* FindListOptions * FindListOptions
*/ */
@@ -150,7 +145,8 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
if (hasValue(this.findListOptionsSub)) { if (hasValue(this.findListOptionsSub)) {
this.findListOptionsSub.unsubscribe(); this.findListOptionsSub.unsubscribe();
} }
this.findListOptionsSub = this.paginationService.getCurrentPagination(this.config.id, this.config).subscribe((findListOptions) => { this.findListOptionsSub = this.paginationService.getCurrentPagination(this.config.id, this.config).pipe(
switchMap((findListOptions) => {
const query: string = data.query; const query: string = data.query;
const scope: string = data.scope; const scope: string = data.scope;
if (query != null && this.currentSearchQuery !== query) { if (query != null && this.currentSearchQuery !== query) {
@@ -168,23 +164,18 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
this.paginationService.resetPage(this.config.id); this.paginationService.resetPage(this.config.id);
} }
if (hasValue(this.searchSub)) { return this.epersonService.searchByScope(this.currentSearchScope, this.currentSearchQuery, {
this.searchSub.unsubscribe();
this.subs = this.subs.filter((sub: Subscription) => sub !== this.searchSub);
}
this.searchSub = this.epersonService.searchByScope(this.currentSearchScope, this.currentSearchQuery, {
currentPage: findListOptions.currentPage, currentPage: findListOptions.currentPage,
elementsPerPage: findListOptions.pageSize elementsPerPage: findListOptions.pageSize
}).pipe( });
}
),
getAllSucceededRemoteData(), getAllSucceededRemoteData(),
).subscribe((peopleRD) => { ).subscribe((peopleRD) => {
this.ePeople$.next(peopleRD.payload); this.ePeople$.next(peopleRD.payload);
this.pageInfoState$.next(peopleRD.payload.pageInfo); this.pageInfoState$.next(peopleRD.payload.pageInfo);
} }
); );
this.subs.push(this.searchSub);
}
);
} }
/** /**

View File

@@ -29,6 +29,7 @@ import { RequestService } from '../../../../core/data/request.service';
import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-options.model';
import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub';
describe('EPersonFormComponent', () => { describe('EPersonFormComponent', () => {
let component: EPersonFormComponent; let component: EPersonFormComponent;
@@ -41,7 +42,7 @@ describe('EPersonFormComponent', () => {
let authorizationService: AuthorizationDataService; let authorizationService: AuthorizationDataService;
let groupsDataService: GroupDataService; let groupsDataService: GroupDataService;
let paginationService: PaginationService; let paginationService;
@@ -112,16 +113,7 @@ describe('EPersonFormComponent', () => {
getGroupRegistryRouterLink: '' getGroupRegistryRouterLink: ''
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {}
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule, imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule,
TranslateModule.forRoot({ TranslateModule.forRoot({

View File

@@ -30,6 +30,7 @@ import { PaginationComponentOptions } from '../../../../../shared/pagination/pag
import { SortDirection, SortOptions } from '../../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../../../core/data/request.models'; import { FindListOptions } from '../../../../../core/data/request.models';
import { PaginationService } from '../../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../../../shared/testing/pagination-service.stub';
describe('MembersListComponent', () => { describe('MembersListComponent', () => {
let component: MembersListComponent; let component: MembersListComponent;
@@ -119,16 +120,7 @@ describe('MembersListComponent', () => {
builderService = getMockFormBuilderService(); builderService = getMockFormBuilderService();
translateService = getMockTranslateService(); translateService = getMockTranslateService();
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
clearPagination : {},
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule, imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule,
TranslateModule.forRoot({ TranslateModule.forRoot({

View File

@@ -39,6 +39,7 @@ import { PaginationComponentOptions } from '../../../../../shared/pagination/pag
import { SortDirection, SortOptions } from '../../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../../../core/data/request.models'; import { FindListOptions } from '../../../../../core/data/request.models';
import { PaginationService } from '../../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../../../shared/testing/pagination-service.stub';
describe('SubgroupsListComponent', () => { describe('SubgroupsListComponent', () => {
let component: SubgroupsListComponent; let component: SubgroupsListComponent;
@@ -106,17 +107,7 @@ describe('SubgroupsListComponent', () => {
builderService = getMockFormBuilderService(); builderService = getMockFormBuilderService();
translateService = getMockTranslateService(); translateService = getMockTranslateService();
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {},
clearPagination: {}
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule, imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule,
TranslateModule.forRoot({ TranslateModule.forRoot({

View File

@@ -32,6 +32,7 @@ import { PaginationComponentOptions } from '../../../shared/pagination/paginatio
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../core/data/request.models'; import { FindListOptions } from '../../../core/data/request.models';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
describe('GroupRegistryComponent', () => { describe('GroupRegistryComponent', () => {
let component: GroupsRegistryComponent; let component: GroupsRegistryComponent;
@@ -136,16 +137,7 @@ describe('GroupRegistryComponent', () => {
authorizationService = jasmine.createSpyObj('authorizationService', { authorizationService = jasmine.createSpyObj('authorizationService', {
isAuthorized: observableOf(true) isAuthorized: observableOf(true)
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {}
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule, imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule,
TranslateModule.forRoot({ TranslateModule.forRoot({

View File

@@ -27,6 +27,7 @@ import { PaginationComponentOptions } from '../../../shared/pagination/paginatio
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../core/data/request.models'; import { FindListOptions } from '../../../core/data/request.models';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
describe('BitstreamFormatsComponent', () => { describe('BitstreamFormatsComponent', () => {
let comp: BitstreamFormatsComponent; let comp: BitstreamFormatsComponent;
@@ -104,14 +105,7 @@ describe('BitstreamFormatsComponent', () => {
clearBitStreamFormatRequests: observableOf('cleared') clearBitStreamFormatRequests: observableOf('cleared')
}); });
paginationService = jasmine.createSpyObj('PaginationService', { paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule],
@@ -236,14 +230,7 @@ describe('BitstreamFormatsComponent', () => {
clearBitStreamFormatRequests: observableOf('cleared') clearBitStreamFormatRequests: observableOf('cleared')
}); });
paginationService = jasmine.createSpyObj('PaginationService', { paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule],
@@ -292,13 +279,7 @@ describe('BitstreamFormatsComponent', () => {
clearBitStreamFormatRequests: observableOf('cleared') clearBitStreamFormatRequests: observableOf('cleared')
}); });
paginationService = jasmine.createSpyObj('PaginationService', { paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule],

View File

@@ -28,11 +28,6 @@ export class BitstreamFormatsComponent implements OnInit, OnDestroy {
*/ */
bitstreamFormats: Observable<RemoteData<PaginatedList<BitstreamFormat>>>; bitstreamFormats: Observable<RemoteData<PaginatedList<BitstreamFormat>>>;
/**
* A BehaviourSubject that keeps track of the pageState used to update the currently displayed bitstreamFormats
*/
// pageState: BehaviorSubject<string>;
/** /**
* The current pagination configuration for the page used by the FindAll method * The current pagination configuration for the page used by the FindAll method
* Currently simply renders all bitstream formats * Currently simply renders all bitstream formats

View File

@@ -22,12 +22,13 @@ import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../core/data/request.models'; import { FindListOptions } from '../../../core/data/request.models';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
describe('MetadataRegistryComponent', () => { describe('MetadataRegistryComponent', () => {
let comp: MetadataRegistryComponent; let comp: MetadataRegistryComponent;
let fixture: ComponentFixture<MetadataRegistryComponent>; let fixture: ComponentFixture<MetadataRegistryComponent>;
let registryService: RegistryService; let registryService: RegistryService;
let paginationService: PaginationService; let paginationService;
const mockSchemasList = [ const mockSchemasList = [
{ {
id: 1, id: 1,
@@ -67,14 +68,7 @@ describe('MetadataRegistryComponent', () => {
}; };
/* tslint:enable:no-empty */ /* tslint:enable:no-empty */
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -27,6 +27,7 @@ import { PaginationComponentOptions } from '../../../shared/pagination/paginatio
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../core/data/request.models'; import { FindListOptions } from '../../../core/data/request.models';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
describe('MetadataSchemaComponent', () => { describe('MetadataSchemaComponent', () => {
let comp: MetadataSchemaComponent; let comp: MetadataSchemaComponent;
@@ -129,15 +130,7 @@ describe('MetadataSchemaComponent', () => {
}) })
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -22,6 +22,7 @@ import { PaginationComponentOptions } from '../../shared/pagination/pagination-c
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../core/data/request.models'; import { FindListOptions } from '../../core/data/request.models';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
describe('BrowseByDatePageComponent', () => { describe('BrowseByDatePageComponent', () => {
let comp: BrowseByDatePageComponent; let comp: BrowseByDatePageComponent;
@@ -70,15 +71,7 @@ describe('BrowseByDatePageComponent', () => {
detectChanges: () => fixture.detectChanges() detectChanges: () => fixture.detectChanges()
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -17,7 +17,7 @@ import { environment } from '../../../environments/environment';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
import { SortOptions } from '../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
@Component({ @Component({
selector: 'ds-browse-by-date-page', selector: 'ds-browse-by-date-page',
@@ -47,13 +47,14 @@ export class BrowseByDatePageComponent extends BrowseByMetadataPageComponent {
} }
ngOnInit(): void { ngOnInit(): void {
const sortConfig = new SortOptions('default', SortDirection.ASC);
this.startsWithType = StartsWithType.date; this.startsWithType = StartsWithType.date;
this.updatePage(new BrowseEntrySearchOptions(this.defaultBrowseId, this.paginationConfig, this.sortConfig)); this.updatePage(new BrowseEntrySearchOptions(this.defaultBrowseId, this.paginationConfig, sortConfig));
const currentPagination$ = this.paginationService.getCurrentPagination(this.paginationConfig.id, this.paginationConfig); this.currentPagination$ = this.paginationService.getCurrentPagination(this.paginationConfig.id, this.paginationConfig);
const currentSort$ = this.paginationService.getCurrentSort(this.paginationConfig.id, this.sortConfig); this.currentSort$ = this.paginationService.getCurrentSort(this.paginationConfig.id, sortConfig);
this.subs.push( this.subs.push(
observableCombineLatest([this.route.params, this.route.queryParams, this.route.data, observableCombineLatest([this.route.params, this.route.queryParams, this.route.data,
currentPagination$, currentSort$]).pipe( this.currentPagination$, this.currentSort$]).pipe(
map(([routeParams, queryParams, data, currentPage, currentSort]) => { map(([routeParams, queryParams, data, currentPage, currentSort]) => {
return [Object.assign({}, routeParams, queryParams, data), currentPage, currentSort]; return [Object.assign({}, routeParams, queryParams, data), currentPage, currentSort];
}) })

View File

@@ -27,8 +27,8 @@
title="{{'browse.title' | translate:{collection: (parent$ | async)?.payload?.name || '', field: 'browse.metadata.' + browseId | translate, value: (value)? '&quot;' + value + '&quot;': ''} }}" title="{{'browse.title' | translate:{collection: (parent$ | async)?.payload?.name || '', field: 'browse.metadata.' + browseId | translate, value: (value)? '&quot;' + value + '&quot;': ''} }}"
parentname="{{(parent$ | async)?.payload?.name || ''}}" parentname="{{(parent$ | async)?.payload?.name || ''}}"
[objects$]="(items$ !== undefined)? items$ : browseEntries$" [objects$]="(items$ !== undefined)? items$ : browseEntries$"
[paginationConfig]="paginationConfig" [paginationConfig]="(currentPagination$ |async)"
[sortConfig]="sortConfig" [sortConfig]="(currentSort$ |async)"
[type]="startsWithType" [type]="startsWithType"
[startsWithOptions]="startsWithOptions" [startsWithOptions]="startsWithOptions"
[enableArrows]="true" [enableArrows]="true"

View File

@@ -24,16 +24,14 @@ import { VarDirective } from '../../shared/utils/var.directive';
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
describe('BrowseByMetadataPageComponent', () => { describe('BrowseByMetadataPageComponent', () => {
let comp: BrowseByMetadataPageComponent; let comp: BrowseByMetadataPageComponent;
let fixture: ComponentFixture<BrowseByMetadataPageComponent>; let fixture: ComponentFixture<BrowseByMetadataPageComponent>;
let browseService: BrowseService; let browseService: BrowseService;
let route: ActivatedRoute; let route: ActivatedRoute;
let paginationService: PaginationService; let paginationService;
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 });
const sort = new SortOptions('score', SortDirection.DESC);
const mockCommunity = Object.assign(new Community(), { const mockCommunity = Object.assign(new Community(), {
id: 'test-uuid', id: 'test-uuid',
@@ -88,11 +86,7 @@ describe('BrowseByMetadataPageComponent', () => {
params: observableOf({}) params: observableOf({})
}); });
paginationService = jasmine.createSpyObj('PaginationService', { paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getRouteParameterValue: observableOf('')
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -16,7 +16,7 @@ import { DSpaceObject } from '../../core/shared/dspace-object.model';
import { StartsWithType } from '../../shared/starts-with/starts-with-decorator'; import { StartsWithType } from '../../shared/starts-with/starts-with-decorator';
import { BrowseByType, rendersBrowseBy } from '../+browse-by-switcher/browse-by-decorator'; import { BrowseByType, rendersBrowseBy } from '../+browse-by-switcher/browse-by-decorator';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { map } from 'rxjs/operators'; import { map, switchMap } from 'rxjs/operators';
@Component({ @Component({
selector: 'ds-browse-by-metadata-page', selector: 'ds-browse-by-metadata-page',
@@ -56,9 +56,14 @@ export class BrowseByMetadataPageComponent implements OnInit {
}); });
/** /**
* The sorting config used to sort the values (defaults to Ascending) * The pagination observable
*/ */
sortConfig: SortOptions = new SortOptions('default', SortDirection.ASC); currentPagination$: Observable<PaginationComponentOptions>;
/**
* The sorting config observable
*/
currentSort$: Observable<SortOptions>;
/** /**
* List of subscriptions * List of subscriptions
@@ -107,11 +112,12 @@ export class BrowseByMetadataPageComponent implements OnInit {
} }
ngOnInit(): void { ngOnInit(): void {
this.updatePage(new BrowseEntrySearchOptions(this.defaultBrowseId, this.paginationConfig, this.sortConfig)); const sortConfig = new SortOptions('default', SortDirection.ASC);
const currentPagination$ = this.paginationService.getCurrentPagination(this.paginationConfig.id, this.paginationConfig); this.updatePage(new BrowseEntrySearchOptions(this.defaultBrowseId, this.paginationConfig, sortConfig));
const currentSort$ = this.paginationService.getCurrentSort(this.paginationConfig.id, this.sortConfig); this.currentPagination$ = this.paginationService.getCurrentPagination(this.paginationConfig.id, this.paginationConfig);
this.currentSort$ = this.paginationService.getCurrentSort(this.paginationConfig.id, sortConfig);
this.subs.push( this.subs.push(
observableCombineLatest([this.route.params, this.route.queryParams, currentPagination$, currentSort$]).pipe( observableCombineLatest([this.route.params, this.route.queryParams, this.currentPagination$, this.currentSort$]).pipe(
map(([routeParams, queryParams, currentPage, currentSort]) => { map(([routeParams, queryParams, currentPage, currentSort]) => {
return [Object.assign({}, routeParams, queryParams),currentPage,currentSort]; return [Object.assign({}, routeParams, queryParams),currentPage,currentSort];
}) })
@@ -161,6 +167,7 @@ export class BrowseByMetadataPageComponent implements OnInit {
* @param value The value of the browse-entry to display items for * @param value The value of the browse-entry to display items for
*/ */
updatePageWithItems(searchOptions: BrowseEntrySearchOptions, value: string) { updatePageWithItems(searchOptions: BrowseEntrySearchOptions, value: string) {
console.log('updatePAge', searchOptions);
this.items$ = this.browseService.getBrowseItemsFor(value, searchOptions); this.items$ = this.browseService.getBrowseItemsFor(value, searchOptions);
} }

View File

@@ -22,6 +22,7 @@ import { PaginationComponentOptions } from '../../shared/pagination/pagination-c
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../core/data/request.models'; import { FindListOptions } from '../../core/data/request.models';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
describe('BrowseByTitlePageComponent', () => { describe('BrowseByTitlePageComponent', () => {
let comp: BrowseByTitlePageComponent; let comp: BrowseByTitlePageComponent;
@@ -65,15 +66,7 @@ describe('BrowseByTitlePageComponent', () => {
data: observableOf({ metadata: 'title' }) data: observableOf({ metadata: 'title' })
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -35,12 +35,12 @@ export class BrowseByTitlePageComponent extends BrowseByMetadataPageComponent {
} }
ngOnInit(): void { ngOnInit(): void {
this.sortConfig = new SortOptions('dc.title', SortDirection.ASC); const sortConfig = new SortOptions('dc.title', SortDirection.ASC);
this.updatePage(new BrowseEntrySearchOptions(this.defaultBrowseId, this.paginationConfig, this.sortConfig)); this.updatePage(new BrowseEntrySearchOptions(this.defaultBrowseId, this.paginationConfig, sortConfig));
const currentPagination$ = this.paginationService.getCurrentPagination(this.paginationConfig.id, this.paginationConfig); this.currentPagination$ = this.paginationService.getCurrentPagination(this.paginationConfig.id, this.paginationConfig);
const currentSort$ = this.paginationService.getCurrentSort(this.paginationConfig.id, this.sortConfig); this.currentSort$ = this.paginationService.getCurrentSort(this.paginationConfig.id, sortConfig);
this.subs.push( this.subs.push(
observableCombineLatest([this.route.params, this.route.queryParams, currentPagination$, currentSort$]).pipe( observableCombineLatest([this.route.params, this.route.queryParams, this.currentPagination$, this.currentSort$]).pipe(
map(([routeParams, queryParams, currentPage, currentSort]) => { map(([routeParams, queryParams, currentPage, currentSort]) => {
return [Object.assign({}, routeParams, queryParams),currentPage,currentSort]; return [Object.assign({}, routeParams, queryParams),currentPage,currentSort];
}) })

View File

@@ -24,6 +24,7 @@ import { of as observableOf } from 'rxjs';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { ThemeService } from '../../shared/theme-support/theme.service'; import { ThemeService } from '../../shared/theme-support/theme.service';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
describe('CommunityPageSubCollectionList Component', () => { describe('CommunityPageSubCollectionList Component', () => {
let comp: CommunityPageSubCollectionListComponent; let comp: CommunityPageSubCollectionListComponent;
@@ -117,16 +118,7 @@ describe('CommunityPageSubCollectionList Component', () => {
} }
}; };
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {}
});
themeService = getMockThemeService(); themeService = getMockThemeService();

View File

@@ -24,6 +24,7 @@ import { of as observableOf } from 'rxjs';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { ThemeService } from '../../shared/theme-support/theme.service'; import { ThemeService } from '../../shared/theme-support/theme.service';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
describe('CommunityPageSubCommunityListComponent Component', () => { describe('CommunityPageSubCommunityListComponent Component', () => {
let comp: CommunityPageSubCommunityListComponent; let comp: CommunityPageSubCommunityListComponent;
@@ -118,15 +119,7 @@ describe('CommunityPageSubCommunityListComponent Component', () => {
} }
}; };
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
themeService = getMockThemeService(); themeService = getMockThemeService();

View File

@@ -24,6 +24,7 @@ import { SortDirection, SortOptions } from '../../core/cache/models/sort-options
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { ThemeService } from '../../shared/theme-support/theme.service'; import { ThemeService } from '../../shared/theme-support/theme.service';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
describe('TopLevelCommunityList Component', () => { describe('TopLevelCommunityList Component', () => {
let comp: TopLevelCommunityListComponent; let comp: TopLevelCommunityListComponent;
@@ -109,14 +110,7 @@ describe('TopLevelCommunityList Component', () => {
} }
}; };
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getRouteParameterValue: observableOf('')
});
themeService = getMockThemeService(); themeService = getMockThemeService();

View File

@@ -20,6 +20,7 @@ import { PaginationService } from '../../../../../core/pagination/pagination.ser
import { PaginationComponentOptions } from '../../../../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../../../../shared/pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../../../core/data/request.models'; import { FindListOptions } from '../../../../../core/data/request.models';
import { PaginationServiceStub } from '../../../../../shared/testing/pagination-service.stub';
describe('PaginatedDragAndDropBitstreamListComponent', () => { describe('PaginatedDragAndDropBitstreamListComponent', () => {
let comp: PaginatedDragAndDropBitstreamListComponent; let comp: PaginatedDragAndDropBitstreamListComponent;
@@ -28,7 +29,7 @@ describe('PaginatedDragAndDropBitstreamListComponent', () => {
let bundleService: BundleDataService; let bundleService: BundleDataService;
let objectValuesPipe: ObjectValuesPipe; let objectValuesPipe: ObjectValuesPipe;
let requestService: RequestService; let requestService: RequestService;
let paginationService: PaginationService; let paginationService;
const columnSizes = new ResponsiveTableSizes([ const columnSizes = new ResponsiveTableSizes([
new ResponsiveColumnSizes(2, 2, 3, 4, 4), new ResponsiveColumnSizes(2, 2, 3, 4, 4),
@@ -114,15 +115,7 @@ describe('PaginatedDragAndDropBitstreamListComponent', () => {
hasByHref$: observableOf(true) hasByHref$: observableOf(true)
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot()], imports: [TranslateModule.forRoot()],

View File

@@ -20,6 +20,7 @@ import { PaginationComponentOptions } from '../../../../shared/pagination/pagina
import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../../core/data/request.models'; import { FindListOptions } from '../../../../core/data/request.models';
import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub';
describe('FullFileSectionComponent', () => { describe('FullFileSectionComponent', () => {
let comp: FullFileSectionComponent; let comp: FullFileSectionComponent;
@@ -56,15 +57,7 @@ describe('FullFileSectionComponent', () => {
findAllByItemAndBundleName: createSuccessfulRemoteDataObject$(createPaginatedList([mockBitstream, mockBitstream, mockBitstream])) findAllByItemAndBundleName: createSuccessfulRemoteDataObject$(createPaginatedList([mockBitstream, mockBitstream, mockBitstream]))
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {

View File

@@ -9,6 +9,8 @@ import { ActivatedRouteStub } from '../shared/testing/active-router.stub';
import { RoleServiceMock } from '../shared/mocks/role-service.mock'; import { RoleServiceMock } from '../shared/mocks/role-service.mock';
import { cold, hot } from 'jasmine-marbles'; import { cold, hot } from 'jasmine-marbles';
import { MyDSpaceConfigurationValueType } from './my-dspace-configuration-value-type'; import { MyDSpaceConfigurationValueType } from './my-dspace-configuration-value-type';
import { PaginationServiceStub } from '../shared/testing/pagination-service.stub';
import { PaginationService } from '../core/pagination/pagination.service';
describe('MyDSpaceConfigurationService', () => { describe('MyDSpaceConfigurationService', () => {
let service: MyDSpaceConfigurationService; let service: MyDSpaceConfigurationService;
@@ -34,18 +36,13 @@ describe('MyDSpaceConfigurationService', () => {
getRouteDataValue: observableOf({}) getRouteDataValue: observableOf({})
}); });
const paginationService = jasmine.createSpyObj('PaginationService', { const paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(defaults.pagination),
getCurrentSort: observableOf(defaults.sort),
getRouteParameterValue: observableOf('')
});
const activatedRoute: any = new ActivatedRouteStub(); const activatedRoute: any = new ActivatedRouteStub();
const roleService: any = new RoleServiceMock(); const roleService: any = new RoleServiceMock();
beforeEach(() => { beforeEach(() => {
service = new MyDSpaceConfigurationService(roleService, spy, paginationService, activatedRoute); service = new MyDSpaceConfigurationService(roleService, spy, paginationService as any, activatedRoute);
}); });
describe('when the scope is called', () => { describe('when the scope is called', () => {

View File

@@ -16,6 +16,12 @@ import { isNumeric } from 'rxjs/internal-compatibility';
}) })
/** /**
* Service to manage the pagination of different components * Service to manage the pagination of different components
* The pagination information will be stored in the route based on a paginationID.
* The following params are used for the different kind of pagination information:
* - For the page: p.{paginationID}
* - For the page size: rpp.{paginationID}
* - For the sort direction: sd.{paginationID}
* - For the sort field: sf.{paginationID}
*/ */
export class PaginationService { export class PaginationService {

View File

@@ -5,6 +5,7 @@ import { SortDirection, SortOptions } from '../../cache/models/sort-options.mode
import { PaginatedSearchOptions } from '../../../shared/search/paginated-search-options.model'; import { PaginatedSearchOptions } from '../../../shared/search/paginated-search-options.model';
import { SearchFilter } from '../../../shared/search/search-filter.model'; import { SearchFilter } from '../../../shared/search/search-filter.model';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
describe('SearchConfigurationService', () => { describe('SearchConfigurationService', () => {
let service: SearchConfigurationService; let service: SearchConfigurationService;
@@ -30,17 +31,13 @@ describe('SearchConfigurationService', () => {
getRouteParameterValue: observableOf('') getRouteParameterValue: observableOf('')
}); });
const paginationService = jasmine.createSpyObj('PaginationService', { const paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(defaults.pagination),
getCurrentSort: observableOf(defaults.sort),
getRouteParameterValue: observableOf('')
});
const activatedRoute: any = new ActivatedRouteStub(); const activatedRoute: any = new ActivatedRouteStub();
beforeEach(() => { beforeEach(() => {
service = new SearchConfigurationService(routeService, paginationService, activatedRoute); service = new SearchConfigurationService(routeService, paginationService as any, activatedRoute);
}); });
describe('when the scope is called', () => { describe('when the scope is called', () => {
beforeEach(() => { beforeEach(() => {

View File

@@ -27,6 +27,7 @@ import { PaginationComponentOptions } from '../../../shared/pagination/paginatio
import { SortDirection, SortOptions } from '../../cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../cache/models/sort-options.model';
import { FindListOptions } from '../../data/request.models'; import { FindListOptions } from '../../data/request.models';
import { SearchConfigurationService } from './search-configuration.service'; import { SearchConfigurationService } from './search-configuration.service';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
@Component({ template: '' }) @Component({ template: '' })
class DummyComponent { class DummyComponent {
@@ -102,16 +103,7 @@ describe('SearchService', () => {
} }
}; };
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {}
});
const searchConfigService = {paginationID: 'page-id'}; const searchConfigService = {paginationID: 'page-id'};
beforeEach(() => { beforeEach(() => {

View File

@@ -17,6 +17,7 @@ import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../core/data/request.models'; import { FindListOptions } from '../../core/data/request.models';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
describe('ProcessOverviewComponent', () => { describe('ProcessOverviewComponent', () => {
let component: ProcessOverviewComponent; let component: ProcessOverviewComponent;
@@ -24,15 +25,11 @@ describe('ProcessOverviewComponent', () => {
let processService: ProcessDataService; let processService: ProcessDataService;
let ePersonService: EPersonDataService; let ePersonService: EPersonDataService;
let paginationService: PaginationService; let paginationService;
let processes: Process[]; let processes: Process[];
let ePerson: EPerson; let ePerson: EPerson;
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 });
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
function init() { function init() {
processes = [ processes = [
Object.assign(new Process(), { Object.assign(new Process(), {
@@ -80,11 +77,7 @@ describe('ProcessOverviewComponent', () => {
findById: createSuccessfulRemoteDataObject$(ePerson) findById: createSuccessfulRemoteDataObject$(ePerson)
}); });
paginationService = jasmine.createSpyObj('PaginationService', { paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
});
} }
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {

View File

@@ -13,6 +13,7 @@ import { SortDirection, SortOptions } from '../core/cache/models/sort-options.mo
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { PaginationService } from '../core/pagination/pagination.service'; import { PaginationService } from '../core/pagination/pagination.service';
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service'; import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
import { PaginationServiceStub } from '../shared/testing/pagination-service.stub';
describe('SearchNavbarComponent', () => { describe('SearchNavbarComponent', () => {
let component: SearchNavbarComponent; let component: SearchNavbarComponent;
@@ -33,16 +34,7 @@ describe('SearchNavbarComponent', () => {
navigate: (commands) => commands navigate: (commands) => commands
}; };
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getRouteParameterValue: observableOf(''),
updateRouteWithUrl: {},
clearPagination : {}
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [

View File

@@ -20,6 +20,7 @@ import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils';
import { storeModuleConfig } from '../../app.reducer'; import { storeModuleConfig } from '../../app.reducer';
import { FindListOptions } from '../../core/data/request.models'; import { FindListOptions } from '../../core/data/request.models';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../testing/pagination-service.stub';
describe('BrowseByComponent', () => { describe('BrowseByComponent', () => {
let comp: BrowseByComponent; let comp: BrowseByComponent;
@@ -53,15 +54,7 @@ describe('BrowseByComponent', () => {
pageSizeOptions: [5, 10, 15, 20], pageSizeOptions: [5, 10, 15, 20],
pageSize: 15 pageSize: 15
}); });
const sort = new SortOptions('score', SortDirection.DESC); const paginationService = new PaginationServiceStub(paginationConfig);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(paginationConfig),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
updateRoute: {},
resetPage: {},
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -15,14 +15,12 @@ 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 { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../testing/pagination-service.stub';
describe('ItemVersionsComponent', () => { describe('ItemVersionsComponent', () => {
let component: ItemVersionsComponent; let component: ItemVersionsComponent;
let fixture: ComponentFixture<ItemVersionsComponent>; let fixture: ComponentFixture<ItemVersionsComponent>;
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 });
const sort = new SortOptions('score', SortDirection.DESC);
const versionHistory = Object.assign(new VersionHistory(), { const versionHistory = Object.assign(new VersionHistory(), {
id: '1' id: '1'
}); });
@@ -59,11 +57,7 @@ describe('ItemVersionsComponent', () => {
getVersions: createSuccessfulRemoteDataObject$(createPaginatedList(versions)) getVersions: createSuccessfulRemoteDataObject$(createPaginatedList(versions))
}); });
const paginationService = jasmine.createSpyObj('PaginationService', { const paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getRouteParameterValue: observableOf('')
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -17,6 +17,7 @@ import { SortDirection, SortOptions } from '../../../core/cache/models/sort-opti
import { FindListOptions } from '../../../core/data/request.models'; import { FindListOptions } from '../../../core/data/request.models';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../testing/pagination-service.stub';
describe('CollectionSelectComponent', () => { describe('CollectionSelectComponent', () => {
let comp: CollectionSelectComponent; let comp: CollectionSelectComponent;
@@ -40,16 +41,7 @@ describe('CollectionSelectComponent', () => {
currentPage: 1 currentPage: 1
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), SharedModule, RouterTestingModule.withRoutes([])], imports: [TranslateModule.forRoot(), SharedModule, RouterTestingModule.withRoutes([])],

View File

@@ -17,12 +17,13 @@ import { createPaginatedList } from '../../testing/utils.test';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../core/data/request.models'; import { FindListOptions } from '../../../core/data/request.models';
import { PaginationServiceStub } from '../../testing/pagination-service.stub';
describe('ItemSelectComponent', () => { describe('ItemSelectComponent', () => {
let comp: ItemSelectComponent; let comp: ItemSelectComponent;
let fixture: ComponentFixture<ItemSelectComponent>; let fixture: ComponentFixture<ItemSelectComponent>;
let objectSelectService: ObjectSelectService; let objectSelectService: ObjectSelectService;
let paginationService: PaginationService; let paginationService;
const mockItemList = [ const mockItemList = [
Object.assign(new Item(), { Object.assign(new Item(), {
@@ -63,14 +64,7 @@ describe('ItemSelectComponent', () => {
currentPage: 1 currentPage: 1
}); });
const sort = new SortOptions('score', SortDirection.DESC); paginationService = new PaginationServiceStub(mockPaginationOptions);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(mockPaginationOptions),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});

View File

@@ -13,6 +13,7 @@ import { EnumKeysPipe } from '../utils/enum-keys-pipe';
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 { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../testing/pagination-service.stub';
describe('PageSizeSelectorComponent', () => { describe('PageSizeSelectorComponent', () => {
@@ -34,11 +35,7 @@ describe('PageSizeSelectorComponent', () => {
sort sort
}; };
const paginationService = jasmine.createSpyObj('PaginationService', { const paginationService = new PaginationServiceStub(pagination, sort);
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getRouteParameterValue: observableOf('')
});
const activatedRouteStub = { const activatedRouteStub = {
queryParams: observableOf({ queryParams: observableOf({

View File

@@ -14,6 +14,7 @@ import { ObjectValuesPipe } from '../utils/object-values-pipe';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { PaginationServiceStub } from '../testing/pagination-service.stub';
@Component({ @Component({
selector: 'ds-mock-paginated-drag-drop-abstract', selector: 'ds-mock-paginated-drag-drop-abstract',
@@ -47,8 +48,6 @@ describe('AbstractPaginatedDragAndDropListComponent', () => {
const url = 'mock-abstract-paginated-drag-and-drop-list-component'; const url = 'mock-abstract-paginated-drag-and-drop-list-component';
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 });
const sort = new SortOptions('score', SortDirection.DESC);
const object1 = Object.assign(new DSpaceObject(), { uuid: 'object-1' }); const object1 = Object.assign(new DSpaceObject(), { uuid: 'object-1' });
const object2 = Object.assign(new DSpaceObject(), { uuid: 'object-2' }); const object2 = Object.assign(new DSpaceObject(), { uuid: 'object-2' });
@@ -77,11 +76,7 @@ describe('AbstractPaginatedDragAndDropListComponent', () => {
paginationComponent = jasmine.createSpyObj('paginationComponent', { paginationComponent = jasmine.createSpyObj('paginationComponent', {
doPageChange: {} doPageChange: {}
}); });
paginationService = jasmine.createSpyObj('PaginationService', { paginationService = new PaginationServiceStub();
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getRouteParameterValue: observableOf('')
});
objectsRD$ = new BehaviorSubject(objectsRD); objectsRD$ = new BehaviorSubject(objectsRD);
component = new MockAbstractPaginatedDragAndDropListComponent(objectUpdatesService, elRef, objectValuesPipe, url, paginationService, objectsRD$); component = new MockAbstractPaginatedDragAndDropListComponent(objectUpdatesService, elRef, objectValuesPipe, url, paginationService, objectsRD$);
component.paginationComponent = paginationComponent; component.paginationComponent = paginationComponent;

View File

@@ -34,6 +34,7 @@ import { storeModuleConfig } from '../../app.reducer';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { FindListOptions } from '../../core/data/request.models'; import { FindListOptions } from '../../core/data/request.models';
import { BehaviorSubject, of as observableOf } from 'rxjs'; import { BehaviorSubject, of as observableOf } from 'rxjs';
import { PaginationServiceStub } from '../testing/pagination-service.stub';
function expectPages(fixture: ComponentFixture<any>, pagesDef: string[]): void { function expectPages(fixture: ComponentFixture<any>, pagesDef: string[]): void {
const de = fixture.debugElement.query(By.css('.pagination')); const de = fixture.debugElement.query(By.css('.pagination'));
@@ -108,7 +109,7 @@ describe('Pagination component', () => {
let activatedRouteStub: MockActivatedRoute; let activatedRouteStub: MockActivatedRoute;
let routerStub: RouterMock; let routerStub: RouterMock;
let paginationService: PaginationService; let paginationService;
// Define initial state and test state // Define initial state and test state
const _initialState = { width: 1600, height: 770 }; const _initialState = { width: 1600, height: 770 };

View File

@@ -99,9 +99,8 @@ export class PaginationComponent implements OnDestroy, OnInit {
@Input() public hidePagerWhenSinglePage = true; @Input() public hidePagerWhenSinglePage = true;
/** /**
* Option for disabling updating and reading route parameters on pagination changes * Option for retaining the scroll position upon navigating to an url with updated params.
* In other words, changing pagination won't add or update the url parameters on the current page, and the url * After the page update the page will scroll back to the current pagination component.
* parameters won't affect the pagination of this component
*/ */
@Input() public retainScrollPosition = false; @Input() public retainScrollPosition = false;
@@ -121,8 +120,8 @@ export class PaginationComponent implements OnDestroy, OnInit {
public hostWindow: Observable<HostWindowState>; public hostWindow: Observable<HostWindowState>;
/** /**
* ID for the pagination instance. Only useful if you wish to * ID for the pagination instance. This ID is used in the routing to retrieve the pagination options.
* have more than once instance at a time in a given component. * This ID needs to be unique between different pagination components when more than one will be displayed on the same page.
*/ */
public id: string; public id: string;
@@ -156,7 +155,7 @@ export class PaginationComponent implements OnDestroy, OnInit {
* Name of the field that's used to sort by * Name of the field that's used to sort by
*/ */
public sortField$; public sortField$;
public defaultSortField = 'id'; public defaultSortField = 'name';
/** /**
* Array to track all subscriptions and unsubscribe them onDestroy * Array to track all subscriptions and unsubscribe them onDestroy

View File

@@ -22,6 +22,7 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../../core/data/request.models'; import { FindListOptions } from '../../../../core/data/request.models';
import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../testing/pagination-service.stub';
describe('EpersonGroupListComponent test suite', () => { describe('EpersonGroupListComponent test suite', () => {
let comp: EpersonGroupListComponent; let comp: EpersonGroupListComponent;
@@ -64,15 +65,7 @@ describe('EpersonGroupListComponent test suite', () => {
const groupPaginatedList = buildPaginatedList(new PageInfo(), [GroupMock, GroupMock]); const groupPaginatedList = buildPaginatedList(new PageInfo(), [GroupMock, GroupMock]);
const groupPaginatedListRD = createSuccessfulRemoteDataObject(groupPaginatedList); const groupPaginatedListRD = createSuccessfulRemoteDataObject(groupPaginatedList);
const sort = new SortOptions('score', SortDirection.DESC); paginationService = new PaginationServiceStub();
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(paginationOptions),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
clearPagination: {}
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -14,6 +14,7 @@ import { FindListOptions } from '../../core/data/request.models';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service'; import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service';
import { PaginationServiceStub } from '../testing/pagination-service.stub';
describe('SearchFormComponent', () => { describe('SearchFormComponent', () => {
let comp: SearchFormComponent; let comp: SearchFormComponent;
@@ -21,16 +22,7 @@ describe('SearchFormComponent', () => {
let de: DebugElement; let de: DebugElement;
let el: HTMLElement; let el: HTMLElement;
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {}
});
const searchConfigService = {paginationID: 'test-id'}; const searchConfigService = {paginationID: 'test-id'};

View File

@@ -19,6 +19,7 @@ import { PaginationComponentOptions } from '../../../../../pagination/pagination
import { SortDirection, SortOptions } from '../../../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../../../../core/data/request.models'; import { FindListOptions } from '../../../../../../core/data/request.models';
import { PaginationService } from '../../../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../../../testing/pagination-service.stub';
describe('SearchFacetOptionComponent', () => { describe('SearchFacetOptionComponent', () => {
let comp: SearchFacetOptionComponent; let comp: SearchFacetOptionComponent;
@@ -85,17 +86,8 @@ describe('SearchFacetOptionComponent', () => {
let router; let router;
const page = observableOf(0); const page = observableOf(0);
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const pagination = Object.assign(new PaginationComponentOptions(), { id: 'page-id', currentPage: 1, pageSize: 20 });
const sort = new SortOptions('score', SortDirection.DESC); const paginationService = new PaginationServiceStub(pagination);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
getPageParam: 'p.page-id',
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule], imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule],

View File

@@ -23,6 +23,7 @@ import { PaginationComponentOptions } from '../../../../../pagination/pagination
import { SortDirection, SortOptions } from '../../../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../../../../core/data/request.models'; import { FindListOptions } from '../../../../../../core/data/request.models';
import { PaginationService } from '../../../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../../../testing/pagination-service.stub';
describe('SearchFacetRangeOptionComponent', () => { describe('SearchFacetRangeOptionComponent', () => {
let comp: SearchFacetRangeOptionComponent; let comp: SearchFacetRangeOptionComponent;
@@ -58,17 +59,8 @@ describe('SearchFacetRangeOptionComponent', () => {
let router; let router;
const page = observableOf(0); const page = observableOf(0);
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const pagination = Object.assign(new PaginationComponentOptions(), { id: 'page-id', currentPage: 1, pageSize: 20 });
const sort = new SortOptions('score', SortDirection.DESC); const paginationService = new PaginationServiceStub(pagination);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {},
getPageParam: 'p.page-id',
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -18,6 +18,7 @@ import { PaginationComponentOptions } from '../../../../../pagination/pagination
import { SortDirection, SortOptions } from '../../../../../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../../../../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../../../../../core/data/request.models'; import { FindListOptions } from '../../../../../../core/data/request.models';
import { PaginationService } from '../../../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../../../testing/pagination-service.stub';
describe('SearchFacetSelectedOptionComponent', () => { describe('SearchFacetSelectedOptionComponent', () => {
let comp: SearchFacetSelectedOptionComponent; let comp: SearchFacetSelectedOptionComponent;
@@ -110,17 +111,8 @@ describe('SearchFacetSelectedOptionComponent', () => {
let router; let router;
const page = observableOf(0); const page = observableOf(0);
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const pagination = Object.assign(new PaginationComponentOptions(), { id: 'page-id', currentPage: 1, pageSize: 20 });
const sort = new SortOptions('score', SortDirection.DESC); const paginationService = new PaginationServiceStub(pagination);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {},
getPageParam: 'p.page-id'
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -16,6 +16,7 @@ import { SortDirection, SortOptions } from '../../../../core/cache/models/sort-o
import { FindListOptions } from '../../../../core/data/request.models'; import { FindListOptions } from '../../../../core/data/request.models';
import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../core/pagination/pagination.service';
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
import { PaginationServiceStub } from '../../../testing/pagination-service.stub';
describe('SearchLabelComponent', () => { describe('SearchLabelComponent', () => {
let comp: SearchLabelComponent; let comp: SearchLabelComponent;
@@ -38,17 +39,8 @@ describe('SearchLabelComponent', () => {
filter2 filter2
]; ];
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const pagination = Object.assign(new PaginationComponentOptions(), { id: 'page-id', currentPage: 1, pageSize: 20 });
const sort = new SortOptions('score', SortDirection.DESC); const paginationService = new PaginationServiceStub(pagination);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
updateRouteWithUrl: {},
getPageParam: 'p.test-id'
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -17,6 +17,7 @@ import { SEARCH_CONFIG_SERVICE } from '../../../+my-dspace-page/my-dspace-page.c
import { SidebarService } from '../../sidebar/sidebar.service'; import { SidebarService } from '../../sidebar/sidebar.service';
import { SidebarServiceStub } from '../../testing/sidebar-service.stub'; 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';
describe('SearchSettingsComponent', () => { describe('SearchSettingsComponent', () => {
@@ -65,11 +66,7 @@ describe('SearchSettingsComponent', () => {
}), }),
}; };
paginationService = jasmine.createSpyObj('PaginationService', { paginationService = new PaginationServiceStub(pagination, sort);
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
resetPage: {},
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([])], imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([])],

View File

@@ -15,6 +15,7 @@ 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 { FindListOptions } from '../../../core/data/request.models'; import { FindListOptions } from '../../../core/data/request.models';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../testing/pagination-service.stub';
describe('StartsWithDateComponent', () => { describe('StartsWithDateComponent', () => {
let comp: StartsWithDateComponent; let comp: StartsWithDateComponent;
@@ -30,15 +31,7 @@ describe('StartsWithDateComponent', () => {
queryParams: observableOf({}) queryParams: observableOf({})
}); });
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -13,6 +13,7 @@ import { SortDirection, SortOptions } from '../../../core/cache/models/sort-opti
import { FindListOptions } from '../../../core/data/request.models'; import { FindListOptions } from '../../../core/data/request.models';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../testing/pagination-service.stub';
describe('StartsWithTextComponent', () => { describe('StartsWithTextComponent', () => {
let comp: StartsWithTextComponent; let comp: StartsWithTextComponent;
@@ -22,15 +23,7 @@ describe('StartsWithTextComponent', () => {
const options = ['0-9', 'A', 'B', 'C']; const options = ['0-9', 'A', 'B', 'C'];
const pagination = Object.assign(new PaginationComponentOptions(), { currentPage: 1, pageSize: 20 }); const paginationService = new PaginationServiceStub();
const sort = new SortOptions('score', SortDirection.DESC);
const findlistOptions = Object.assign(new FindListOptions(), { currentPage: 1, elementsPerPage: 20 });
const paginationService = jasmine.createSpyObj('PaginationService', {
getCurrentPagination: observableOf(pagination),
getCurrentSort: observableOf(sort),
getFindListOptions: observableOf(findlistOptions),
resetPage: {},
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -0,0 +1,25 @@
import { of as observableOf } from 'rxjs';
import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { FindListOptions } from '../../core/data/request.models';
export class PaginationServiceStub {
constructor(
public pagination = Object.assign(new PaginationComponentOptions(), {currentPage: 1, pageSize: 20}),
public sort = new SortOptions('score', SortDirection.DESC),
public findlistOptions = Object.assign(new FindListOptions(), {currentPage: 1, elementsPerPage: 20}),
) {
}
getCurrentPagination = jasmine.createSpy('getCurrentPagination').and.returnValue(observableOf(this.pagination));
getCurrentSort = jasmine.createSpy('getCurrentSort').and.returnValue(observableOf(this.sort));
getFindListOptions = jasmine.createSpy('getFindListOptions').and.returnValue(observableOf(this.findlistOptions));
resetPage = jasmine.createSpy('resetPage');
updateRoute = jasmine.createSpy('updateRoute');
updateRouteWithUrl = jasmine.createSpy('updateRouteWithUrl');
clearPagination = jasmine.createSpy('clearPagination');
getRouteParameterValue = jasmine.createSpy('getRouteParameterValue').and.returnValue(observableOf(''));
getPageParam = jasmine.createSpy('getPageParam').and.returnValue(`p.${this.pagination.id}`);
}

View File

@@ -2,13 +2,13 @@ import { Component, OnDestroy, OnInit } from '@angular/core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { BehaviorSubject, combineLatest, Subscription } from 'rxjs'; import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
import { filter, mergeMap, take } from 'rxjs/operators'; import { filter, mergeMap, switchMap, take } from 'rxjs/operators';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { ExternalSourceService } from '../../core/data/external-source.service'; import { ExternalSourceService } from '../../core/data/external-source.service';
import { ExternalSourceData } from './import-external-searchbar/submission-import-external-searchbar.component'; import { ExternalSourceData } from './import-external-searchbar/submission-import-external-searchbar.component';
import { RemoteData } from '../../core/data/remote-data'; import { RemoteData } from '../../core/data/remote-data';
import { PaginatedList, buildPaginatedList } from '../../core/data/paginated-list.model'; import { buildPaginatedList, PaginatedList } from '../../core/data/paginated-list.model';
import { ExternalSourceEntry } from '../../core/shared/external-source-entry.model'; import { ExternalSourceEntry } from '../../core/shared/external-source-entry.model';
import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service'; import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service';
import { Context } from '../../core/shared/context.model'; import { Context } from '../../core/shared/context.model';
@@ -167,25 +167,27 @@ export class SubmissionImportExternalComponent implements OnInit, OnDestroy {
* @param query The query string to search * @param query The query string to search
*/ */
private retrieveExternalSources(): void { private retrieveExternalSources(): void {
this.reload$.subscribe((sourceQueryObject: {source: string, query: string}) => { this.reload$.pipe(
switchMap(
(sourceQueryObject: { source: string, query: string }) => {
const source = sourceQueryObject.source; const source = sourceQueryObject.source;
const query = sourceQueryObject.query; const query = sourceQueryObject.query;
if (isNotEmpty(source) && isNotEmpty(query)) { if (isNotEmpty(source) && isNotEmpty(query)) {
this.routeData.sourceId = source; this.routeData.sourceId = source;
this.routeData.query = query; this.routeData.query = query;
this.isLoading$.next(true); this.isLoading$.next(true);
this.subs.push( return this.searchConfigService.paginatedSearchOptions.pipe(
this.searchConfigService.paginatedSearchOptions.pipe(
filter((searchOptions) => searchOptions.query === query), filter((searchOptions) => searchOptions.query === query),
mergeMap((searchOptions) => this.externalService.getExternalSourceEntries(this.routeData.sourceId, searchOptions).pipe( mergeMap((searchOptions) => this.externalService.getExternalSourceEntries(this.routeData.sourceId, searchOptions).pipe(
getFinishedRemoteData(), getFinishedRemoteData(),
)), )),
);
}
}
),
).subscribe((rdData) => { ).subscribe((rdData) => {
this.entriesRD$.next(rdData); this.entriesRD$.next(rdData);
this.isLoading$.next(false); this.isLoading$.next(false);
})
);
}
}); });
} }