Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for submission describe warning contribution bug #2905

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions src/app/submission/sections/form/section-form.component.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -282,15 +282,15 @@ describe('SubmissionSectionFormComponent test suite', () => {
expect(comp.sectionData.errorsToShow).toEqual([]);
expect(comp.sectionData.data).toEqual(sectionData);
expect(comp.isLoading).toBeFalsy();
expect(comp.initForm).toHaveBeenCalledWith(sectionData);
expect(comp.initForm).toHaveBeenCalledWith(sectionData, [], []);
expect(comp.subscriptions).toHaveBeenCalled();
});

it('should init form model properly', () => {
formBuilderService.modelFromConfiguration.and.returnValue(testFormModel);
const sectionData = {};

comp.initForm(sectionData);
comp.initForm(sectionData, [], []);

expect(comp.formModel).toEqual(testFormModel);

Expand All @@ -305,7 +305,7 @@ describe('SubmissionSectionFormComponent test suite', () => {
path: '/sections/' + sectionObject.id,
};

comp.initForm(sectionData);
comp.initForm(sectionData, [], []);

expect(comp.formModel).toBeUndefined();
expect(sectionsServiceStub.setSectionError).toHaveBeenCalledWith(submissionId, sectionObject.id, sectionError);
Expand Down Expand Up @@ -464,7 +464,7 @@ describe('SubmissionSectionFormComponent test suite', () => {
compAsAny.formData = {};
compAsAny.sectionMetadata = ['dc.title'];

comp.updateForm(sectionData, sectionError);
comp.updateForm({ data: sectionData, errorsToShow: sectionError } as any);

expect(comp.isUpdating).toBeFalsy();
expect(comp.initForm).toHaveBeenCalled();
Expand All @@ -476,15 +476,19 @@ describe('SubmissionSectionFormComponent test suite', () => {
it('should update form error properly', () => {
spyOn(comp, 'initForm');
spyOn(comp, 'checksForErrors');
const sectionData: any = {
const sectionData = {
'dc.title': [new FormFieldMetadataValueObject('test')],
};
const sectionState = {
data: sectionData,
errorsToShow: [{ path: '/test', message: 'test' }],
} as any;
comp.sectionData.data = {};
comp.sectionData.errorsToShow = [];
compAsAny.formData = sectionData;
compAsAny.sectionMetadata = ['dc.title'];

comp.updateForm(sectionData, parsedSectionErrors);
comp.updateForm(sectionState);

expect(comp.initForm).not.toHaveBeenCalled();
expect(comp.checksForErrors).toHaveBeenCalled();
Expand All @@ -495,8 +499,9 @@ describe('SubmissionSectionFormComponent test suite', () => {
spyOn(comp, 'initForm');
spyOn(comp, 'checksForErrors');
const sectionData: any = {};
const sectionErrors: any = [{ path: '/test', message: 'test' }];

comp.updateForm(sectionData, parsedSectionErrors);
comp.updateForm({ data: sectionData, errorsToShow: sectionErrors } as any);

expect(comp.initForm).not.toHaveBeenCalled();
expect(comp.checksForErrors).toHaveBeenCalled();
Expand Down Expand Up @@ -562,7 +567,7 @@ describe('SubmissionSectionFormComponent test suite', () => {
const sectionState = {
data: sectionData,
errorsToShow: parsedSectionErrors,
};
} as any;

formService.getFormData.and.returnValue(observableOf(formData));
sectionsServiceStub.getSectionState.and.returnValue(observableOf(sectionState));
Expand All @@ -571,7 +576,7 @@ describe('SubmissionSectionFormComponent test suite', () => {

expect(compAsAny.subs.length).toBe(2);
expect(compAsAny.formData).toEqual(formData);
expect(comp.updateForm).toHaveBeenCalledWith(sectionState.data, sectionState.errorsToShow);
expect(comp.updateForm).toHaveBeenCalledWith(sectionState);

});

Expand Down
21 changes: 11 additions & 10 deletions src/app/submission/sections/form/section-form.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
this.submissionObject = submissionObject;
this.isSectionReadonly = isSectionReadOnly;
// Is the first loading so init form
this.initForm(sectionData);
this.initForm(sectionData, this.sectionData.errorsToShow, this.sectionData.serverValidationErrors);
this.sectionData.data = sectionData;
this.subscriptions();
this.isLoading = false;
Expand Down Expand Up @@ -328,7 +328,7 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
* @param sectionData
* the section data retrieved from the server
*/
initForm(sectionData: WorkspaceitemSectionFormObject): void {
initForm(sectionData: WorkspaceitemSectionFormObject, errorsToShow: SubmissionSectionError[], serverValidationErrors: SubmissionSectionError[]): void {
try {
this.formModel = this.formBuilderService.modelFromConfiguration(
this.submissionId,
Expand All @@ -339,7 +339,7 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
this.isSectionReadonly,
);
const sectionMetadata = this.sectionService.computeSectionConfiguredMetadata(this.formConfig);
this.sectionService.updateSectionData(this.submissionId, this.sectionData.id, sectionData, this.sectionData.errorsToShow, this.sectionData.serverValidationErrors, sectionMetadata);
this.sectionService.updateSectionData(this.submissionId, this.sectionData.id, sectionData, errorsToShow, serverValidationErrors, sectionMetadata);
} catch (e) {
const msg: string = this.translate.instant('error.submission.sections.init-form-error') + e.toString();
const sectionError: SubmissionSectionError = {
Expand All @@ -356,20 +356,21 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
/**
* Update form model
*
* @param sectionData
* the section data retrieved from the server
* @param errors
* the section errors retrieved from the server
* @param sectionState
* the section state retrieved from the server
*/
updateForm(sectionData: WorkspaceitemSectionFormObject, errors: SubmissionSectionError[]): void {
updateForm(sectionState: SubmissionSectionObject): void {

const sectionData = sectionState.data as WorkspaceitemSectionFormObject;
const errors = sectionState.errorsToShow;

if (isNotEmpty(sectionData) && !isEqual(sectionData, this.sectionData.data)) {
this.sectionData.data = sectionData;
if (this.hasMetadataEnrichment(sectionData)) {
this.isUpdating = true;
this.formModel = null;
this.cdr.detectChanges();
this.initForm(sectionData);
this.initForm(sectionData, errors, sectionState.serverValidationErrors);
this.checksForErrors(errors);
this.isUpdating = false;
this.cdr.detectChanges();
Expand Down Expand Up @@ -423,7 +424,7 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
.subscribe((sectionState: SubmissionSectionObject) => {
this.fieldsOnTheirWayToBeRemoved = new Map();
this.sectionMetadata = sectionState.metadata;
this.updateForm(sectionState.data as WorkspaceitemSectionFormObject, sectionState.errorsToShow);
this.updateForm(sectionState);
}),
);
}
Expand Down
Loading