Added proposed change to force clearing the object cache in workspace component onInit.

This commit is contained in:
Michael W Spalti
2019-10-21 16:51:25 -07:00
parent 83e7b662e3
commit 9ae869936b
4 changed files with 25 additions and 10 deletions

View File

@@ -30,6 +30,8 @@ import { RoleService } from '../core/roles/role.service';
import { MockRoleService } from '../shared/mocks/mock-role-service'; import { MockRoleService } from '../shared/mocks/mock-role-service';
import { SearchFixedFilterService } from '../+search-page/search-filters/search-filter/search-fixed-filter.service'; import { SearchFixedFilterService } from '../+search-page/search-filters/search-filter/search-fixed-filter.service';
import { createSuccessfulRemoteDataObject$ } from '../shared/testing/utils'; import { createSuccessfulRemoteDataObject$ } from '../shared/testing/utils';
import { RequestService } from '../core/data/request.service';
import { getMockRequestService } from '../shared/mocks/mock-request.service';
describe('MyDSpacePageComponent', () => { describe('MyDSpacePageComponent', () => {
let comp: MyDSpacePageComponent; let comp: MyDSpacePageComponent;
@@ -50,6 +52,7 @@ describe('MyDSpacePageComponent', () => {
const mockResults = createSuccessfulRemoteDataObject$(['test', 'data']); const mockResults = createSuccessfulRemoteDataObject$(['test', 'data']);
const searchServiceStub = jasmine.createSpyObj('SearchService', { const searchServiceStub = jasmine.createSpyObj('SearchService', {
search: mockResults, search: mockResults,
getEndpoint: observableOf('discover/search/objects'),
getSearchLink: '/mydspace', getSearchLink: '/mydspace',
getScopes: observableOf(['test-scope']), getScopes: observableOf(['test-scope']),
setServiceOptions: {} setServiceOptions: {}
@@ -76,6 +79,7 @@ describe('MyDSpacePageComponent', () => {
scope: scopeParam scope: scopeParam
}) })
}; };
const sidebarService = { const sidebarService = {
isCollapsed: observableOf(true), isCollapsed: observableOf(true),
collapse: () => this.isCollapsed = observableOf(true), collapse: () => this.isCollapsed = observableOf(true),
@@ -125,6 +129,10 @@ describe('MyDSpacePageComponent', () => {
{ {
provide: SearchFixedFilterService, provide: SearchFixedFilterService,
useValue: mockFixedFilterService useValue: mockFixedFilterService
},
{
provide: RequestService,
useValue: getMockRequestService()
} }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]

View File

@@ -28,6 +28,7 @@ import { SearchConfigurationService } from '../+search-page/search-service/searc
import { MyDSpaceConfigurationService } from './my-dspace-configuration.service'; import { MyDSpaceConfigurationService } from './my-dspace-configuration.service';
import { ViewMode } from '../core/shared/view-mode.model'; import { ViewMode } from '../core/shared/view-mode.model';
import { MyDSpaceRequest } from '../core/data/request.models'; import { MyDSpaceRequest } from '../core/data/request.models';
import { RequestService } from '../core/data/request.service';
export const MYDSPACE_ROUTE = '/mydspace'; export const MYDSPACE_ROUTE = '/mydspace';
export const SEARCH_CONFIG_SERVICE: InjectionToken<SearchConfigurationService> = new InjectionToken<SearchConfigurationService>('searchConfigurationService'); export const SEARCH_CONFIG_SERVICE: InjectionToken<SearchConfigurationService> = new InjectionToken<SearchConfigurationService>('searchConfigurationService');
@@ -96,6 +97,7 @@ export class MyDSpacePageComponent implements OnInit {
viewModeList = [ViewMode.List, ViewMode.Detail]; viewModeList = [ViewMode.List, ViewMode.Detail];
constructor(private service: SearchService, constructor(private service: SearchService,
private requestService: RequestService,
private sidebarService: SearchSidebarService, private sidebarService: SearchSidebarService,
private windowService: HostWindowService, private windowService: HostWindowService,
@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: MyDSpaceConfigurationService) { @Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: MyDSpaceConfigurationService) {
@@ -115,7 +117,8 @@ export class MyDSpacePageComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
this.configurationList$ = this.searchConfigService.getAvailableConfigurationOptions(); this.configurationList$ = this.searchConfigService.getAvailableConfigurationOptions();
this.searchOptions$ = this.searchConfigService.paginatedSearchOptions; this.searchOptions$ = this.searchConfigService.paginatedSearchOptions;
// This assures an empty search cache each for each onInit()
this.service.getEndpoint().subscribe((url) => this.requestService.removeByHrefSubstring(url));
this.sub = this.searchOptions$.pipe( this.sub = this.searchOptions$.pipe(
tap(() => this.resultsRD$.next(null)), tap(() => this.resultsRD$.next(null)),
switchMap((options: PaginatedSearchOptions) => this.service.search(options).pipe(getSucceededRemoteData()))) switchMap((options: PaginatedSearchOptions) => this.service.search(options).pipe(getSucceededRemoteData())))

View File

@@ -97,14 +97,8 @@ export class SearchService implements OnDestroy {
} }
} }
/** getEndpoint(searchOptions?: PaginatedSearchOptions): Observable<string> {
* Method to retrieve a paginated list of search results from the server return this.halService.getEndpoint(this.searchLinkPath).pipe(
* @param {PaginatedSearchOptions} searchOptions The configuration necessary to perform this search
* @param responseMsToLive The amount of milliseconds for the response to live in cache
* @returns {Observable<RemoteData<PaginatedList<SearchResult<DSpaceObject>>>>} Emits a paginated list with all search results found
*/
search(searchOptions?: PaginatedSearchOptions, responseMsToLive?: number): Observable<RemoteData<PaginatedList<SearchResult<DSpaceObject>>>> {
const hrefObs = this.halService.getEndpoint(this.searchLinkPath).pipe(
map((url: string) => { map((url: string) => {
if (hasValue(searchOptions)) { if (hasValue(searchOptions)) {
return (searchOptions as PaginatedSearchOptions).toRestUrl(url); return (searchOptions as PaginatedSearchOptions).toRestUrl(url);
@@ -113,6 +107,17 @@ export class SearchService implements OnDestroy {
} }
}) })
); );
}
/**
* Method to retrieve a paginated list of search results from the server
* @param {PaginatedSearchOptions} searchOptions The configuration necessary to perform this search
* @param responseMsToLive The amount of milliseconds for the response to live in cache
* @returns {Observable<RemoteData<PaginatedList<SearchResult<DSpaceObject>>>>} Emits a paginated list with all search results found
*/
search(searchOptions?: PaginatedSearchOptions, responseMsToLive?: number): Observable<RemoteData<PaginatedList<SearchResult<DSpaceObject>>>> {
const hrefObs = this.getEndpoint(searchOptions);
const requestObs = hrefObs.pipe( const requestObs = hrefObs.pipe(
map((url: string) => { map((url: string) => {

View File

@@ -21,7 +21,6 @@ import { ProcessTaskResponse } from './models/process-task-response';
*/ */
@Injectable() @Injectable()
export class ClaimedTaskDataService extends TasksService<ClaimedTask> { export class ClaimedTaskDataService extends TasksService<ClaimedTask> {
protected responseMsToLive = 10 * 1000;
protected responseMsToLive = 10 * 1000; protected responseMsToLive = 10 * 1000;