[835] Auto-save in new Item Submission form breaks the form

Notifications are enable only for manual submission savings.
This commit is contained in:
Alessandro Martelli
2020-11-16 19:09:17 +01:00
parent 6136162a21
commit 82b7b8aa6f
8 changed files with 77 additions and 6 deletions

View File

@@ -368,6 +368,7 @@ export class SaveSubmissionFormAction implements Action {
type = SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM;
payload: {
submissionId: string;
isManual?: boolean;
};
/**
@@ -376,8 +377,8 @@ export class SaveSubmissionFormAction implements Action {
* @param submissionId
* the submission's ID
*/
constructor(submissionId: string) {
this.payload = { submissionId };
constructor(submissionId: string, isManual: boolean = false) {
this.payload = { submissionId, isManual };
}
}

View File

@@ -211,6 +211,52 @@ describe('SubmissionObjectEffects test suite', () => {
expect(submissionObjectEffects.saveSubmission$).toBeObservable(expected);
});
it('should enable notifications if is manual', () => {
actions = hot('--a-', {
a: {
type: SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM,
payload: {
submissionId: submissionId,
isManual: true
}
}
});
submissionJsonPatchOperationsServiceStub.jsonPatchByResourceType.and.returnValue(observableOf(mockSubmissionRestResponse));
const expected = cold('--b-', {
b: new SaveSubmissionFormSuccessAction(
submissionId,
mockSubmissionRestResponse as any,
true
)
});
expect(submissionObjectEffects.saveSubmission$).toBeObservable(expected);
});
it('should disable notifications if is not manual', () => {
actions = hot('--a-', {
a: {
type: SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM,
payload: {
submissionId: submissionId,
isManual: false
}
}
});
submissionJsonPatchOperationsServiceStub.jsonPatchByResourceType.and.returnValue(observableOf(mockSubmissionRestResponse));
const expected = cold('--b-', {
b: new SaveSubmissionFormSuccessAction(
submissionId,
mockSubmissionRestResponse as any,
false
)
});
expect(submissionObjectEffects.saveSubmission$).toBeObservable(expected);
});
it('should return a SAVE_SUBMISSION_FORM_ERROR action on error', () => {
actions = hot('--a-', {
a: {

View File

@@ -132,7 +132,7 @@ export class SubmissionObjectEffects {
this.submissionService.getSubmissionObjectLinkName(),
action.payload.submissionId,
'sections').pipe(
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response)),
map((response: SubmissionObject[]) => new SaveSubmissionFormSuccessAction(action.payload.submissionId, response, action.payload.isManual)),
catchError(() => observableOf(new SaveSubmissionFormErrorAction(action.payload.submissionId))));
}));