diff --git a/engine/src/main/java/pl/edu/icm/unity/engine/utils/GroupDelegationConfigGeneratorImpl.java b/engine/src/main/java/pl/edu/icm/unity/engine/utils/GroupDelegationConfigGeneratorImpl.java index 5a747a2787..47689c65a3 100644 --- a/engine/src/main/java/pl/edu/icm/unity/engine/utils/GroupDelegationConfigGeneratorImpl.java +++ b/engine/src/main/java/pl/edu/icm/unity/engine/utils/GroupDelegationConfigGeneratorImpl.java @@ -36,6 +36,7 @@ import pl.edu.icm.unity.base.registration.EnquiryForm; import pl.edu.icm.unity.base.registration.EnquiryFormBuilder; import pl.edu.icm.unity.base.registration.EnquiryFormNotifications; +import pl.edu.icm.unity.base.registration.FormLayoutUtils; import pl.edu.icm.unity.base.registration.FormType; import pl.edu.icm.unity.base.registration.GroupRegistrationParam; import pl.edu.icm.unity.base.registration.ParameterRetrievalSettings; @@ -426,6 +427,7 @@ public void resetFormsPolicies(String formName, FormType formType, List pr for (Long policyDocumentId : projectPolicyDocumentsIds) { addPolicyParam(form.getPolicyAgreements(), policyDocumentId); } + FormLayoutUtils.updateRegistrationFormLayout(form.getFormLayouts(), form); regFormDB.update(form); } else if (formType.equals(FormType.ENQUIRY)) @@ -435,6 +437,7 @@ else if (formType.equals(FormType.ENQUIRY)) for (Long policyDocumentId : projectPolicyDocumentsIds) { addPolicyParam(form.getPolicyAgreements(), policyDocumentId); } + FormLayoutUtils.updateEnquiryLayout(form.getLayout(), form); enqFormDB.update(form); } diff --git a/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java b/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java index 2e055f8fff..743b40f619 100644 --- a/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java +++ b/engine/src/test/java/pl/edu/icm/unity/engine/project/TestGroupDelegationConfigGenerator.java @@ -8,6 +8,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Arrays; @@ -38,8 +39,12 @@ import pl.edu.icm.unity.base.registration.BaseFormNotifications; import pl.edu.icm.unity.base.registration.EnquiryForm; import pl.edu.icm.unity.base.registration.EnquiryFormBuilder; +import pl.edu.icm.unity.base.registration.FormType; import pl.edu.icm.unity.base.registration.RegistrationForm; import pl.edu.icm.unity.base.registration.RegistrationFormBuilder; +import pl.edu.icm.unity.base.registration.layout.FormLayout; +import pl.edu.icm.unity.base.registration.layout.FormLayoutElement; +import pl.edu.icm.unity.base.registration.layout.FormParameterElement; import pl.edu.icm.unity.base.translation.TranslationProfile; import pl.edu.icm.unity.base.translation.TranslationRule; import pl.edu.icm.unity.engine.api.translation.form.TranslatedRegistrationRequest.AutomaticRequestAction; @@ -244,6 +249,30 @@ public void shouldValidateUpdateEnquiryForm() throws EngineException assertThat(errors.size()).isEqualTo(0); } + @Test + public void shouldUpdateCustomEnquiryLayoutWhenProjectPoliciesAreReset() throws EngineException + { + when(mockPolicyDocumentDB.getByKey(2L)).thenReturn(new StoredPolicyDocument(2L, "Policy")); + EnquiryForm form = new EnquiryFormBuilder() + .withName("aenSuffix") + .withTargetGroups(new String[] { "/" }) + .withType(EnquiryForm.EnquiryType.STICKY) + .withAddedGroupParam() + .withGroupPath("/A/?*/**") + .endGroupParam() + .withLayout(new FormLayout(List.of(new FormParameterElement(FormLayoutElement.GROUP, 0)))) + .build(); + when(mockEnqFormDB.get(eq("aenSuffix"))).thenReturn(form); + + generator.resetFormsPolicies("aenSuffix", FormType.ENQUIRY, List.of(2L)); + + assertThat(form.getPolicyAgreements()).hasSize(1); + assertThat(form.getLayout().getElements()).containsExactly( + new FormParameterElement(FormLayoutElement.GROUP, 0), + new FormParameterElement(FormLayoutElement.POLICY_AGREEMENT, 0)); + verify(mockEnqFormDB).update(form); + } + @Test public void shouldThrowValidationErrorsWhenRegistrationFormIsIncorrect() throws EngineException {