[CST-6494] Fix issue for which sometimes claimed and pool task weren't shown when a filter is applied

This commit is contained in:
Giuseppe Digilio
2022-09-21 17:16:10 +02:00
parent 9e779cf235
commit ab77e66be7
4 changed files with 32 additions and 8 deletions

View File

@@ -18,6 +18,7 @@ import { getMockLinkService } from '../../../mocks/link-service.mock';
import { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
let component: ClaimedSearchResultListElementComponent;
let fixture: ComponentFixture<ClaimedSearchResultListElementComponent>;
@@ -59,6 +60,9 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt
const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
const linkService = getMockLinkService();
const objectCacheServiceMock = jasmine.createSpyObj('ObjectCacheService', {
remove: jasmine.createSpy('remove')
});
describe('ClaimedSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => {
@@ -68,7 +72,8 @@ describe('ClaimedSearchResultListElementComponent', () => {
providers: [
{ provide: TruncatableService, useValue: {} },
{ provide: LinkService, useValue: linkService },
{ provide: DSONameService, useClass: DSONameServiceMock }
{ provide: DSONameService, useClass: DSONameServiceMock },
{ provide: ObjectCacheService, useValue: objectCacheServiceMock }
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ClaimedSearchResultListElementComponent, {

View File

@@ -1,4 +1,4 @@
import { Component } from '@angular/core';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
@@ -13,6 +13,7 @@ import { followLink } from '../../../utils/follow-link-config.model';
import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
@Component({
selector: 'ds-claimed-search-result-list-element',
@@ -20,7 +21,7 @@ import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
templateUrl: './claimed-search-result-list-element.component.html'
})
@listableObjectComponent(ClaimedTaskSearchResult, ViewMode.ListElement)
export class ClaimedSearchResultListElementComponent extends SearchResultListElementComponent<ClaimedTaskSearchResult, ClaimedTask> {
export class ClaimedSearchResultListElementComponent extends SearchResultListElementComponent<ClaimedTaskSearchResult, ClaimedTask> implements OnInit, OnDestroy {
/**
* A boolean representing if to show submitter information
@@ -40,7 +41,8 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle
public constructor(
protected linkService: LinkService,
protected truncatableService: TruncatableService,
protected dsoNameService: DSONameService
protected dsoNameService: DSONameService,
protected objectCache: ObjectCacheService
) {
super(truncatableService, dsoNameService);
}
@@ -56,4 +58,9 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle
this.workflowitemRD$ = this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>;
}
ngOnDestroy() {
// This ensures the object is removed from cache, when action is performed on task
this.objectCache.remove(this.dso._links.workflowitem.href);
}
}

View File

@@ -18,6 +18,7 @@ import { getMockLinkService } from '../../../mocks/link-service.mock';
import { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
let component: PoolSearchResultListElementComponent;
let fixture: ComponentFixture<PoolSearchResultListElementComponent>;
@@ -59,6 +60,10 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt
const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
const linkService = getMockLinkService();
const objectCacheServiceMock = jasmine.createSpyObj('ObjectCacheService', {
remove: jasmine.createSpy('remove')
});
describe('PoolSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => {
@@ -68,7 +73,8 @@ describe('PoolSearchResultListElementComponent', () => {
providers: [
{ provide: TruncatableService, useValue: {} },
{ provide: LinkService, useValue: linkService },
{ provide: DSONameService, useClass: DSONameServiceMock }
{ provide: DSONameService, useClass: DSONameServiceMock },
{ provide: ObjectCacheService, useValue: objectCacheServiceMock }
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PoolSearchResultListElementComponent, {

View File

@@ -1,4 +1,4 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
@@ -14,6 +14,7 @@ import { TruncatableService } from '../../../truncatable/truncatable.service';
import { followLink } from '../../../utils/follow-link-config.model';
import { LinkService } from '../../../../core/cache/builders/link.service';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
/**
* This component renders pool task object for the search result in the list view.
@@ -25,7 +26,7 @@ import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
})
@listableObjectComponent(PoolTaskSearchResult, ViewMode.ListElement)
export class PoolSearchResultListElementComponent extends SearchResultListElementComponent<PoolTaskSearchResult, PoolTask> implements OnInit {
export class PoolSearchResultListElementComponent extends SearchResultListElementComponent<PoolTaskSearchResult, PoolTask> implements OnInit, OnDestroy {
/**
* A boolean representing if to show submitter information
@@ -50,7 +51,8 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen
constructor(
protected linkService: LinkService,
protected truncatableService: TruncatableService,
protected dsoNameService: DSONameService
protected dsoNameService: DSONameService,
protected objectCache: ObjectCacheService
) {
super(truncatableService, dsoNameService);
}
@@ -66,4 +68,8 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen
this.workflowitemRD$ = this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>;
}
ngOnDestroy() {
// This ensures the object is removed from cache, when action is performed on task
this.objectCache.remove(this.dso._links.workflowitem.href);
}
}