mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2026-09-09 18:02:54 +00:00
[MNT-25409] fix Cannot switch between saved searches correctly (#4876)
This commit is contained in:
+22
-2
@@ -339,8 +339,13 @@ describe('SearchComponent', () => {
|
||||
expect(queryBuilder.execute).toHaveBeenCalledTimes(1);
|
||||
}));
|
||||
|
||||
it('should NOT call execute on navigation to search page', fakeAsync(() => {
|
||||
spyOn(queryBuilder, 'execute');
|
||||
it('should NOT call execute on navigation to search page with unchanged query', fakeAsync(() => {
|
||||
const executeSpy = spyOn(queryBuilder, 'execute');
|
||||
queryParams.next({ q: encodeQuery({ userQuery: 'cm:name:"test*"' }) });
|
||||
tick();
|
||||
|
||||
executeSpy.calls.reset();
|
||||
|
||||
routerEvents.next(new NavigationStart(1, '/mock-search-url', 'imperative'));
|
||||
queryParams.next({ q: encodeQuery({ userQuery: 'cm:name:"test*"' }) });
|
||||
|
||||
@@ -349,5 +354,20 @@ describe('SearchComponent', () => {
|
||||
expect(queryBuilder.execute).not.toHaveBeenCalled();
|
||||
}));
|
||||
|
||||
it('should call execute on navigation to search page with changed query', fakeAsync(() => {
|
||||
const executeSpy = spyOn(queryBuilder, 'execute');
|
||||
queryParams.next({ q: encodeQuery({ userQuery: 'cm:name:"different*"' }) });
|
||||
tick();
|
||||
|
||||
executeSpy.calls.reset();
|
||||
|
||||
routerEvents.next(new NavigationStart(1, '/mock-search-url', 'imperative'));
|
||||
queryParams.next({ q: encodeQuery({ userQuery: 'cm:name:"test*"' }) });
|
||||
|
||||
tick();
|
||||
|
||||
expect(executeSpy).toHaveBeenCalledTimes(1);
|
||||
}));
|
||||
|
||||
testHeader(SearchResultsComponent, false);
|
||||
});
|
||||
|
||||
+6
-1
@@ -147,6 +147,8 @@ export class SearchResultsComponent extends PageComponent implements OnInit {
|
||||
encodedQuery: string;
|
||||
searchConfig: SearchConfiguration;
|
||||
|
||||
private previousEncodedQuery: string;
|
||||
|
||||
constructor(
|
||||
tagsService: TagService,
|
||||
private readonly queryBuilder: SearchQueryBuilderService,
|
||||
@@ -351,10 +353,13 @@ export class SearchResultsComponent extends PageComponent implements OnInit {
|
||||
}
|
||||
|
||||
private shouldExecuteQuery(navigationStartEvent: NavigationStart | null, query: string | undefined): boolean {
|
||||
const hasQueryChanged = query !== this.previousEncodedQuery;
|
||||
this.previousEncodedQuery = query;
|
||||
|
||||
if (!navigationStartEvent || navigationStartEvent.navigationTrigger === 'popstate' || navigationStartEvent.navigationTrigger === 'hashchange') {
|
||||
return true;
|
||||
} else if (navigationStartEvent.navigationTrigger === 'imperative') {
|
||||
return false;
|
||||
return hasQueryChanged;
|
||||
} else {
|
||||
return !!query;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user