[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 { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
let component: ClaimedSearchResultListElementComponent; let component: ClaimedSearchResultListElementComponent;
let fixture: ComponentFixture<ClaimedSearchResultListElementComponent>; let fixture: ComponentFixture<ClaimedSearchResultListElementComponent>;
@@ -59,6 +60,9 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt
const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
const linkService = getMockLinkService(); const linkService = getMockLinkService();
const objectCacheServiceMock = jasmine.createSpyObj('ObjectCacheService', {
remove: jasmine.createSpy('remove')
});
describe('ClaimedSearchResultListElementComponent', () => { describe('ClaimedSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
@@ -68,7 +72,8 @@ describe('ClaimedSearchResultListElementComponent', () => {
providers: [ providers: [
{ provide: TruncatableService, useValue: {} }, { provide: TruncatableService, useValue: {} },
{ provide: LinkService, useValue: linkService }, { provide: LinkService, useValue: linkService },
{ provide: DSONameService, useClass: DSONameServiceMock } { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: ObjectCacheService, useValue: objectCacheServiceMock }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ClaimedSearchResultListElementComponent, { }).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 { ViewMode } from '../../../../core/shared/view-mode.model';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; 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 { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model'; import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
@Component({ @Component({
selector: 'ds-claimed-search-result-list-element', 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' templateUrl: './claimed-search-result-list-element.component.html'
}) })
@listableObjectComponent(ClaimedTaskSearchResult, ViewMode.ListElement) @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 * A boolean representing if to show submitter information
@@ -40,7 +41,8 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle
public constructor( public constructor(
protected linkService: LinkService, protected linkService: LinkService,
protected truncatableService: TruncatableService, protected truncatableService: TruncatableService,
protected dsoNameService: DSONameService protected dsoNameService: DSONameService,
protected objectCache: ObjectCacheService
) { ) {
super(truncatableService, dsoNameService); super(truncatableService, dsoNameService);
} }
@@ -56,4 +58,9 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle
this.workflowitemRD$ = this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>; 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 { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
let component: PoolSearchResultListElementComponent; let component: PoolSearchResultListElementComponent;
let fixture: ComponentFixture<PoolSearchResultListElementComponent>; let fixture: ComponentFixture<PoolSearchResultListElementComponent>;
@@ -59,6 +60,10 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt
const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
const linkService = getMockLinkService(); const linkService = getMockLinkService();
const objectCacheServiceMock = jasmine.createSpyObj('ObjectCacheService', {
remove: jasmine.createSpy('remove')
});
describe('PoolSearchResultListElementComponent', () => { describe('PoolSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
@@ -68,7 +73,8 @@ describe('PoolSearchResultListElementComponent', () => {
providers: [ providers: [
{ provide: TruncatableService, useValue: {} }, { provide: TruncatableService, useValue: {} },
{ provide: LinkService, useValue: linkService }, { provide: LinkService, useValue: linkService },
{ provide: DSONameService, useClass: DSONameServiceMock } { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: ObjectCacheService, useValue: objectCacheServiceMock }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PoolSearchResultListElementComponent, { }).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'; import { Observable } from 'rxjs';
@@ -14,6 +14,7 @@ import { TruncatableService } from '../../../truncatable/truncatable.service';
import { followLink } from '../../../utils/follow-link-config.model'; import { followLink } from '../../../utils/follow-link-config.model';
import { LinkService } from '../../../../core/cache/builders/link.service'; import { LinkService } from '../../../../core/cache/builders/link.service';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.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. * 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) @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 * A boolean representing if to show submitter information
@@ -50,7 +51,8 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen
constructor( constructor(
protected linkService: LinkService, protected linkService: LinkService,
protected truncatableService: TruncatableService, protected truncatableService: TruncatableService,
protected dsoNameService: DSONameService protected dsoNameService: DSONameService,
protected objectCache: ObjectCacheService
) { ) {
super(truncatableService, dsoNameService); super(truncatableService, dsoNameService);
} }
@@ -66,4 +68,8 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen
this.workflowitemRD$ = this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>; 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);
}
} }