98344: Fixed workflow id passed to backend instead of claimed task id

This commit is contained in:
Alexandre Vryghem
2023-01-10 14:10:44 +01:00
parent f4a303f808
commit b351053489
7 changed files with 65 additions and 36 deletions

View File

@@ -1,5 +1,8 @@
import { Component } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { ClaimedTaskActionsAbstractComponent } from './claimed-task-actions-abstract.component'; import { ClaimedTaskActionsAbstractComponent } from './claimed-task-actions-abstract.component';
import { getFirstSucceededRemoteDataPayload } from '../../../../core/shared/operators';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { getAdvancedWorkflowRoute } from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
/** /**
* Abstract component for rendering an advanced claimed task's action * Abstract component for rendering an advanced claimed task's action
@@ -12,7 +15,7 @@ import { ClaimedTaskActionsAbstractComponent } from './claimed-task-actions-abst
selector: 'ds-advanced-claimed-task-action-abstract', selector: 'ds-advanced-claimed-task-action-abstract',
template: '' template: ''
}) })
export abstract class AdvancedClaimedTaskActionsAbstractComponent extends ClaimedTaskActionsAbstractComponent { export abstract class AdvancedClaimedTaskActionsAbstractComponent extends ClaimedTaskActionsAbstractComponent implements OnInit {
workflowType: string; workflowType: string;
@@ -21,10 +24,27 @@ export abstract class AdvancedClaimedTaskActionsAbstractComponent extends Claime
*/ */
workflowTaskPageRoute: string; workflowTaskPageRoute: string;
ngOnInit(): void {
super.ngOnInit();
this.initPageRoute();
}
/**
* Initialise the route to the advanced workflow page
*/
initPageRoute() {
this.subs.push(this.object.workflowitem.pipe(
getFirstSucceededRemoteDataPayload()
).subscribe((workflowItem: WorkflowItem) => {
this.workflowTaskPageRoute = getAdvancedWorkflowRoute(workflowItem.id);
}));
}
openAdvancedClaimedTaskTab(): void { openAdvancedClaimedTaskTab(): void {
void this.router.navigate([this.workflowTaskPageRoute], { void this.router.navigate([this.workflowTaskPageRoute], {
queryParams: { queryParams: {
workflow: this.workflowType, workflow: this.workflowType,
claimedTask: this.object.id,
}, },
}); });
} }

View File

@@ -19,11 +19,19 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
import { import {
ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER
} from '../../../../workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component'; } from '../../../../workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-rating-reviewer/advanced-workflow-action-rating-reviewer.component';
import { of as observableOf } from 'rxjs';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
const taskId = 'claimed-task-1'; const taskId = 'claimed-task-1';
const workflowId = 'workflow-1';
describe('AdvancedClaimedTaskActionRatingReviewerComponent', () => { describe('AdvancedClaimedTaskActionRatingReviewerComponent', () => {
const object = Object.assign(new ClaimedTask(), { id: taskId }); const object = Object.assign(new ClaimedTask(), {
id: taskId,
workflowitem: observableOf(Object.assign(new WorkflowItem(), {
id: workflowId,
})),
});
let component: AdvancedClaimedTaskActionRatingReviewerComponent; let component: AdvancedClaimedTaskActionRatingReviewerComponent;
let fixture: ComponentFixture<AdvancedClaimedTaskActionRatingReviewerComponent>; let fixture: ComponentFixture<AdvancedClaimedTaskActionRatingReviewerComponent>;
@@ -75,11 +83,13 @@ describe('AdvancedClaimedTaskActionRatingReviewerComponent', () => {
}); });
it('should navigate to the advanced workflow page when clicked', () => { it('should navigate to the advanced workflow page when clicked', () => {
component.workflowTaskPageRoute = `/workflowitems/${workflowId}/advanced`;
fixture.debugElement.query(By.css('.ratingReviewerAction')).nativeElement.click(); fixture.debugElement.query(By.css('.ratingReviewerAction')).nativeElement.click();
expect(router.navigate).toHaveBeenCalledWith([`/workflowitems/${taskId}/advanced`], { expect(router.navigate).toHaveBeenCalledWith([`/workflowitems/${workflowId}/advanced`], {
queryParams: { queryParams: {
workflow: ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER, workflow: ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER,
claimedTask: taskId,
}, },
}); });
}); });

View File

@@ -4,7 +4,6 @@ import { NotificationsService } from '../../../notifications/notifications.servi
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { SearchService } from '../../../../core/shared/search/search.service'; import { SearchService } from '../../../../core/shared/search/search.service';
import { RequestService } from '../../../../core/data/request.service'; import { RequestService } from '../../../../core/data/request.service';
import { getAdvancedWorkflowRoute } from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
import { import {
AdvancedClaimedTaskActionsAbstractComponent AdvancedClaimedTaskActionsAbstractComponent
} from '../abstract/advanced-claimed-task-actions-abstract.component'; } from '../abstract/advanced-claimed-task-actions-abstract.component';
@@ -28,11 +27,6 @@ export class AdvancedClaimedTaskActionRatingReviewerComponent extends AdvancedCl
workflowType = ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER; workflowType = ADVANCED_WORKFLOW_ACTION_RATING_REVIEWER;
/**
* Route to the workflow's task page
*/
workflowTaskPageRoute: string;
constructor( constructor(
protected injector: Injector, protected injector: Injector,
protected router: Router, protected router: Router,
@@ -44,15 +38,4 @@ export class AdvancedClaimedTaskActionRatingReviewerComponent extends AdvancedCl
super(injector, router, notificationsService, translate, searchService, requestService); super(injector, router, notificationsService, translate, searchService, requestService);
} }
ngOnInit(): void {
this.initPageRoute();
}
/**
* Initialise the route to the rating reviewer's page
*/
initPageRoute(): void {
this.workflowTaskPageRoute = getAdvancedWorkflowRoute(this.object.id);
}
} }

View File

@@ -20,11 +20,19 @@ import { Location } from '@angular/common';
import { import {
ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER
} from '../../../../workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component'; } from '../../../../workflowitems-edit-page/advanced-workflow-action/advanced-workflow-action-select-reviewer/advanced-workflow-action-select-reviewer.component';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { of as observableOf } from 'rxjs';
const taskId = 'claimed-task-1'; const taskId = 'claimed-task-1';
const workflowId = 'workflow-1';
describe('AdvancedClaimedTaskActionSelectReviewerComponent', () => { describe('AdvancedClaimedTaskActionSelectReviewerComponent', () => {
const object = Object.assign(new ClaimedTask(), { id: taskId }); const object = Object.assign(new ClaimedTask(), {
id: taskId,
workflowitem: observableOf(Object.assign(new WorkflowItem(), {
id: workflowId,
})),
});
let component: AdvancedClaimedTaskActionSelectReviewerComponent; let component: AdvancedClaimedTaskActionSelectReviewerComponent;
let fixture: ComponentFixture<AdvancedClaimedTaskActionSelectReviewerComponent>; let fixture: ComponentFixture<AdvancedClaimedTaskActionSelectReviewerComponent>;
@@ -77,11 +85,13 @@ describe('AdvancedClaimedTaskActionSelectReviewerComponent', () => {
}); });
it('should navigate to the advanced workflow page when clicked', () => { it('should navigate to the advanced workflow page when clicked', () => {
component.workflowTaskPageRoute = `/workflowitems/${workflowId}/advanced`;
fixture.debugElement.query(By.css('.selectReviewerAction')).nativeElement.click(); fixture.debugElement.query(By.css('.selectReviewerAction')).nativeElement.click();
expect(router.navigate).toHaveBeenCalledWith([`/workflowitems/${taskId}/advanced`], { expect(router.navigate).toHaveBeenCalledWith([`/workflowitems/${workflowId}/advanced`], {
queryParams: { queryParams: {
workflow: ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER, workflow: ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER,
claimedTask: taskId,
}, },
}); });
}); });

View File

@@ -8,7 +8,6 @@ import { NotificationsService } from '../../../notifications/notifications.servi
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { SearchService } from '../../../../core/shared/search/search.service'; import { SearchService } from '../../../../core/shared/search/search.service';
import { RequestService } from '../../../../core/data/request.service'; import { RequestService } from '../../../../core/data/request.service';
import { getAdvancedWorkflowRoute } from '../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
import { import {
ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER, ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER,
WORKFLOW_ADVANCED_TASK_OPTION_SELECT_REVIEWER WORKFLOW_ADVANCED_TASK_OPTION_SELECT_REVIEWER
@@ -40,15 +39,4 @@ export class AdvancedClaimedTaskActionSelectReviewerComponent extends AdvancedCl
super(injector, router, notificationsService, translate, searchService, requestService); super(injector, router, notificationsService, translate, searchService, requestService);
} }
ngOnInit(): void {
this.initPageRoute();
}
/**
* Initialise the route to the select reviewer's page
*/
initPageRoute() {
this.workflowTaskPageRoute = getAdvancedWorkflowRoute(this.object.id);
}
} }

View File

@@ -26,7 +26,7 @@ export class AdvancedWorkflowActionSelectReviewerComponent extends AdvancedWorkf
multipleReviewers = true; multipleReviewers = true;
selectedReviewers: EPerson[]; selectedReviewers: EPerson[] = [];
reviewersListActionConfig: EPersonListActionConfig; reviewersListActionConfig: EPersonListActionConfig;

View File

@@ -41,6 +41,24 @@ export abstract class AdvancedWorkflowActionComponent extends WorkflowItemAction
); );
} }
/**
* Performs the action and shows a notification based on the outcome of the action
*/
performAction() {
this.sendRequest(this.route.snapshot.queryParams.claimedTask).subscribe((successful: boolean) => {
if (successful) {
const title = this.translationService.get('workflow-item.' + this.type + '.notification.success.title');
const content = this.translationService.get('workflow-item.' + this.type + '.notification.success.content');
this.notificationsService.success(title, content);
this.previousPage();
} else {
const title = this.translationService.get('workflow-item.' + this.type + '.notification.error.title');
const content = this.translationService.get('workflow-item.' + this.type + '.notification.error.content');
this.notificationsService.error(title, content);
}
});
}
/** /**
* Submits the task with the given {@link createBody}. * Submits the task with the given {@link createBody}.
* *