mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-18 07:23:03 +00:00
Merge branch 'main' into w2p-87382_circular-dependency-fixes
This commit is contained in:
@@ -54,6 +54,8 @@ import { Item } from '../../core/shared/item.model';
|
||||
import { WorkspaceitemDataService } from '../../core/submission/workspaceitem-data.service';
|
||||
import { WorkflowItemDataService } from '../../core/submission/workflowitem-data.service';
|
||||
import { HALEndpointService } from '../../core/shared/hal-endpoint.service';
|
||||
import { SubmissionObjectDataService } from '../../core/submission/submission-object-data.service';
|
||||
import { mockSubmissionObjectDataService } from '../../shared/testing/submission-oject-data-service.mock';
|
||||
|
||||
describe('SubmissionObjectEffects test suite', () => {
|
||||
let submissionObjectEffects: SubmissionObjectEffects;
|
||||
@@ -63,6 +65,7 @@ describe('SubmissionObjectEffects test suite', () => {
|
||||
let notificationsServiceStub;
|
||||
let submissionServiceStub;
|
||||
let submissionJsonPatchOperationsServiceStub;
|
||||
let submissionObjectDataServiceStub;
|
||||
const collectionId: string = mockSubmissionCollectionId;
|
||||
const submissionId: string = mockSubmissionId;
|
||||
const submissionDefinitionResponse: any = mockSubmissionDefinitionResponse;
|
||||
@@ -75,6 +78,9 @@ describe('SubmissionObjectEffects test suite', () => {
|
||||
notificationsServiceStub = new NotificationsServiceStub();
|
||||
submissionServiceStub = new SubmissionServiceStub();
|
||||
submissionJsonPatchOperationsServiceStub = new SubmissionJsonPatchOperationsServiceStub();
|
||||
submissionObjectDataServiceStub = mockSubmissionObjectDataService;
|
||||
|
||||
submissionServiceStub.hasUnsavedModification.and.returnValue(observableOf(true));
|
||||
|
||||
TestBed.configureTestingModule({
|
||||
imports: [
|
||||
@@ -99,6 +105,7 @@ describe('SubmissionObjectEffects test suite', () => {
|
||||
{ provide: WorkflowItemDataService, useValue: {} },
|
||||
{ provide: WorkflowItemDataService, useValue: {} },
|
||||
{ provide: HALEndpointService, useValue: {} },
|
||||
{ provide: SubmissionObjectDataService, useValue: submissionObjectDataServiceStub },
|
||||
],
|
||||
});
|
||||
|
||||
@@ -879,7 +886,7 @@ describe('SubmissionObjectEffects test suite', () => {
|
||||
expect(submissionObjectEffects.saveAndDeposit$).toBeObservable(expected);
|
||||
});
|
||||
|
||||
it('should not allow to deposit when there are errors', () => {
|
||||
it('should return a SAVE_SUBMISSION_FORM_SUCCESS action when there are errors', () => {
|
||||
store.nextState({
|
||||
submission: {
|
||||
objects: submissionState
|
||||
@@ -902,31 +909,8 @@ describe('SubmissionObjectEffects test suite', () => {
|
||||
|
||||
submissionJsonPatchOperationsServiceStub.jsonPatchByResourceType.and.returnValue(observableOf(response));
|
||||
|
||||
const errorsList = parseSectionErrors(mockSectionsErrors);
|
||||
const expected = cold('--b-', {
|
||||
b: [
|
||||
new UpdateSectionDataAction(
|
||||
submissionId,
|
||||
'traditionalpageone',
|
||||
mockSectionsData.traditionalpageone as any,
|
||||
errorsList.traditionalpageone || [],
|
||||
errorsList.traditionalpageone || []
|
||||
),
|
||||
new UpdateSectionDataAction(
|
||||
submissionId,
|
||||
'license',
|
||||
mockSectionsData.license as any,
|
||||
errorsList.license || [],
|
||||
errorsList.license || []
|
||||
),
|
||||
new UpdateSectionDataAction(
|
||||
submissionId,
|
||||
'upload',
|
||||
mockSectionsData.upload as any,
|
||||
errorsList.upload || [],
|
||||
errorsList.upload || []
|
||||
)
|
||||
]
|
||||
b: new SaveSubmissionFormSuccessAction(submissionId, response as any[])
|
||||
});
|
||||
|
||||
expect(submissionObjectEffects.saveAndDeposit$).toBeObservable(expected);
|
||||
|
@@ -198,19 +198,26 @@ export class SubmissionObjectEffects {
|
||||
*/
|
||||
@Effect() saveAndDeposit$ = this.actions$.pipe(
|
||||
ofType(SubmissionObjectActionTypes.SAVE_AND_DEPOSIT_SUBMISSION),
|
||||
withLatestFrom(this.store$),
|
||||
switchMap(([action, currentState]: [SaveAndDepositSubmissionAction, any]) => {
|
||||
return this.operationsService.jsonPatchByResourceType(
|
||||
this.submissionService.getSubmissionObjectLinkName(),
|
||||
action.payload.submissionId,
|
||||
'sections').pipe(
|
||||
withLatestFrom(this.submissionService.hasUnsavedModification()),
|
||||
switchMap(([action, hasUnsavedModification]: [SaveAndDepositSubmissionAction, boolean]) => {
|
||||
let response$: Observable<SubmissionObject[]>;
|
||||
if (hasUnsavedModification) {
|
||||
response$ = this.operationsService.jsonPatchByResourceType(
|
||||
this.submissionService.getSubmissionObjectLinkName(),
|
||||
action.payload.submissionId,
|
||||
'sections') as Observable<SubmissionObject[]>;
|
||||
} else {
|
||||
response$ = this.submissionObjectService.findById(action.payload.submissionId, false, true).pipe(
|
||||
getFirstSucceededRemoteDataPayload(),
|
||||
map((submissionObject: SubmissionObject) => [submissionObject])
|
||||
);
|
||||
}
|
||||
return response$.pipe(
|
||||
map((response: SubmissionObject[]) => {
|
||||
if (this.canDeposit(response)) {
|
||||
return new DepositSubmissionAction(action.payload.submissionId);
|
||||
} else {
|
||||
this.notificationsService.warning(null, this.translate.get('submission.sections.general.sections_not_valid'));
|
||||
return this.parseSaveResponse((currentState.submission as SubmissionState).objects[action.payload.submissionId],
|
||||
response, action.payload.submissionId, currentState.forms);
|
||||
return new SaveSubmissionFormSuccessAction(action.payload.submissionId, response);
|
||||
}
|
||||
}),
|
||||
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
|
||||
@@ -351,6 +358,8 @@ export class SubmissionObjectEffects {
|
||||
* The submission object retrieved from REST
|
||||
* @param submissionId
|
||||
* The submission id
|
||||
* @param forms
|
||||
* The forms state
|
||||
* @param notify
|
||||
* A boolean that indicate if show notification or not
|
||||
* @return SubmissionObjectAction[]
|
||||
@@ -360,7 +369,7 @@ export class SubmissionObjectEffects {
|
||||
currentState: SubmissionObjectEntry,
|
||||
response: SubmissionObject[],
|
||||
submissionId: string,
|
||||
forms,
|
||||
forms: FormState,
|
||||
notify: boolean = true): SubmissionObjectAction[] {
|
||||
|
||||
const mappedActions = [];
|
||||
|
Reference in New Issue
Block a user