Merge pull request #2465 from DSpace/backport-2463-to-dspace-7_x

[Port dspace-7_x] Fix to Pagination position is retained between searches #2159
This commit is contained in:
Alan Orth
2023-08-29 11:27:09 +03:00
committed by GitHub
2 changed files with 15 additions and 7 deletions

View File

@@ -28,6 +28,7 @@ describe('SearchFormComponent', () => {
const searchService = new SearchServiceStub(); const searchService = new SearchServiceStub();
const paginationService = new PaginationServiceStub(); const paginationService = new PaginationServiceStub();
const searchConfigService = { paginationID: 'test-id' }; const searchConfigService = { paginationID: 'test-id' };
const firstPage = { 'spc.page': 1 };
const dspaceObjectService = { const dspaceObjectService = {
findById: () => createSuccessfulRemoteDataObject$(undefined), findById: () => createSuccessfulRemoteDataObject$(undefined),
}; };
@@ -104,16 +105,16 @@ describe('SearchFormComponent', () => {
const scope = 'MCU'; const scope = 'MCU';
let searchQuery = {}; let searchQuery = {};
it('should navigate to the search page even when no parameters are provided', () => { it('should navigate to the search first page even when no parameters are provided', () => {
comp.updateSearch(searchQuery); comp.updateSearch(searchQuery);
expect(router.navigate).toHaveBeenCalledWith(comp.getSearchLinkParts(), { expect(router.navigate).toHaveBeenCalledWith(comp.getSearchLinkParts(), {
queryParams: searchQuery, queryParams: { ...searchQuery, ...firstPage },
queryParamsHandling: 'merge' queryParamsHandling: 'merge'
}); });
}); });
it('should navigate to the search page with parameters only query if only query is provided', () => { it('should navigate to the search first page with parameters only query if only query is provided', () => {
searchQuery = { searchQuery = {
query: query query: query
}; };
@@ -121,12 +122,12 @@ describe('SearchFormComponent', () => {
comp.updateSearch(searchQuery); comp.updateSearch(searchQuery);
expect(router.navigate).toHaveBeenCalledWith(comp.getSearchLinkParts(), { expect(router.navigate).toHaveBeenCalledWith(comp.getSearchLinkParts(), {
queryParams: searchQuery, queryParams: { ...searchQuery, ...firstPage },
queryParamsHandling: 'merge' queryParamsHandling: 'merge'
}); });
}); });
it('should navigate to the search page with parameters only query if only scope is provided', () => { it('should navigate to the search first page with parameters only query if only scope is provided', () => {
searchQuery = { searchQuery = {
scope: scope scope: scope
}; };
@@ -134,7 +135,7 @@ describe('SearchFormComponent', () => {
comp.updateSearch(searchQuery); comp.updateSearch(searchQuery);
expect(router.navigate).toHaveBeenCalledWith(comp.getSearchLinkParts(), { expect(router.navigate).toHaveBeenCalledWith(comp.getSearchLinkParts(), {
queryParams: searchQuery, queryParams: {...searchQuery, ...firstPage},
queryParamsHandling: 'merge' queryParamsHandling: 'merge'
}); });
}); });

View File

@@ -114,7 +114,14 @@ export class SearchFormComponent implements OnChanges {
* @param data Updated parameters * @param data Updated parameters
*/ */
updateSearch(data: any) { updateSearch(data: any) {
const queryParams = Object.assign({}, data); const goToFirstPage = { 'spc.page': 1 };
const queryParams = Object.assign(
{
...goToFirstPage
},
data
);
void this.router.navigate(this.getSearchLinkParts(), { void this.router.navigate(this.getSearchLinkParts(), {
queryParams: queryParams, queryParams: queryParams,