package org.activiti.workflow.simple.converter.step; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; import org.activiti.bpmn.model.FormProperty; import org.activiti.bpmn.model.FormValue; import org.activiti.bpmn.model.UserTask; import org.activiti.workflow.simple.converter.WorkflowDefinitionConversion; import org.activiti.workflow.simple.definition.HumanStepDefinition; import org.activiti.workflow.simple.definition.form.BooleanPropertyDefinition; import org.activiti.workflow.simple.definition.form.FormDefinition; import org.activiti.workflow.simple.definition.form.ListPropertyDefinition; import org.activiti.workflow.simple.definition.form.ListPropertyEntry; import org.activiti.workflow.simple.definition.form.TextPropertyDefinition; import org.junit.Test; /** * Unit test for {@link BaseStepDefinitionConverter}. Since {@link BaseStepDefinitionConverter} is abstract, this test * uses a simple inner class to test basic functionality. * */ public class BaseStepDefinitionConverterTest { @Test public void testCovertFormPropertiesWithListValues() { TestStepDefinitionConverter converter = new TestStepDefinitionConverter(); // Create a form with two properties, one of which is a ListProperty FormDefinition formDefinition = new FormDefinition(); ListPropertyDefinition approveEnum = new ListPropertyDefinition(); approveEnum.setName("Approval"); approveEnum.setType("enum"); approveEnum.addEntry(new ListPropertyEntry("true", "Approve")); approveEnum.addEntry(new ListPropertyEntry("false", "Reject")); formDefinition.addFormProperty(approveEnum); TextPropertyDefinition reason = new TextPropertyDefinition(); reason.setName("Reason"); reason.setType("string"); formDefinition.addFormProperty(reason); BooleanPropertyDefinition validate = new BooleanPropertyDefinition(); validate.setName("Validate"); validate.setType("boolean"); formDefinition.addFormProperty(validate); List<FormProperty> properties = converter.convertProperties(formDefinition); assertTrue(properties.size() == 3); FormProperty firstProperty = properties.get(0); assertNotNull(firstProperty); assertEquals("Approval", firstProperty.getName()); assertEquals("enum", firstProperty.getType()); // Assert the values are set List<FormValue> values = firstProperty.getFormValues(); assertTrue(values.size() == 2); FormValue firstValue = values.get(0); assertEquals("Approve", firstValue.getName()); assertEquals("true", firstValue.getId()); FormValue secondValue = values.get(1); assertEquals("Reject", secondValue.getName()); assertEquals("false", secondValue.getId()); // Now confirm the second property, a non list property, is well formed as well. FormProperty secondProperty = properties.get(1); assertNotNull(secondProperty); assertTrue(secondProperty.getFormValues().isEmpty()); assertEquals("Reason", secondProperty.getName()); assertEquals("string", secondProperty.getType()); FormProperty thirdProperty = properties.get(2); assertNotNull(thirdProperty); assertTrue(thirdProperty.getFormValues().isEmpty()); assertEquals("Validate", thirdProperty.getName()); assertEquals("boolean", thirdProperty.getType()); } /** * Simple inner class to expose abstract functionality to the unit test. * */ private class TestStepDefinitionConverter extends BaseStepDefinitionConverter<HumanStepDefinition, UserTask> { @Override public Class<HumanStepDefinition> getHandledClass() { // Does nothing for this unit test return null; } @Override protected UserTask createProcessArtifact(HumanStepDefinition stepDefinition, WorkflowDefinitionConversion conversion) { // Does nothing for this unit test return null; } } }