/** * @see FormService#duplicateForm(Form)} * @throws FormsLockedException */ @Test(expected = FormsLockedException.class) public void duplicateForm_shouldThrowAnErrorWhenTryingToDuplicateFormWhileFormsAreLocked() { FormService fs = Context.getFormService(); createFormsLockedGPAndSetValue("true"); Form form = fs.getForm(1); fs.duplicateForm(form); }
/** * @see FormService#duplicateForm(Form) */ @Test public void duplicateForm_shouldDuplicateGivenFormSuccessfully() { FormService fs = Context.getFormService(); createFormsLockedGPAndSetValue("false"); Form form = fs.getForm(1); Form duplicateForm = fs.duplicateForm(form); assertEquals(form, duplicateForm); }
/** * @see FormService#duplicateForm(Form) */ @Test public void duplicateForm_shouldClearChangedDetailsAndUpdateCreationDetails() { Date startOfTest = DateUtil.truncateToSeconds(new Date()); FormService formService = Context.getFormService(); Form form = formService.getForm(1); Form dupForm = formService.duplicateForm(form); Assert.assertNull(dupForm.getChangedBy()); Assert.assertNull(dupForm.getDateChanged()); assertEquals(Context.getAuthenticatedUser(), dupForm.getCreator()); assertFalse(dupForm.getDateCreated().before(startOfTest)); }
/** * @see FormService#duplicateForm(Form) */ @Test public void duplicateForm_shouldGiveANewUuidToTheDuplicatedForm() { FormService formService = Context.getFormService(); Form form = formService.getForm(1); String originalUUID = form.getUuid(); Form dupForm = formService.duplicateForm(form); Assert.assertNotNull(dupForm.getUuid()); Assert.assertNotSame(originalUUID, dupForm.getUuid()); }
/** * @throws ParseException * @see FormService#duplicateForm(Form) */ @Test public void duplicateForm_shouldCopyResourcesForOldFormToNewForm() throws ParseException { // save an original resource Form form = Context.getFormService().getForm(1); String name = "Start Date"; FormResource resource = new FormResource(); resource.setForm(form); resource.setName(name); resource.setDatatypeClassname("org.openmrs.customdatatype.datatype.DateDatatype"); Date expected = new SimpleDateFormat("yyyy-MM-dd").parse("2011-10-16"); resource.setValue(expected); resource = Context.getFormService().saveFormResource(resource); Integer resourceId = resource.getFormResourceId(); // duplicate the form Form newForm = Context.getFormService().duplicateForm(form); // get the resource FormResource actual = Context.getFormService().getFormResource(newForm, name); // check it Assert.assertNotNull(actual); Assert.assertEquals(expected, actual.getValue()); }
/** * Duplicates the Form that this HtmlForm points to, and points this HtmlForm to the new form. * @param htmlForm */ private void splitUnderlyingForm(HtmlForm htmlForm) { Form oldForm = htmlForm.getForm(); Form newForm = Context.getFormService().duplicateForm(oldForm); htmlForm.setForm(newForm); HtmlFormEntryService service = HtmlFormEntryUtil.getService(); if (htmlForm.getDeprecatedName() != null) { newForm.setName(htmlForm.getDeprecatedName()); htmlForm.setDeprecatedName(null); } service.saveHtmlForm(htmlForm); }