package org.bonitasoft.forms.server.accessor.widget.impl; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.xerces.impl.xs.opti.DefaultNode; import org.bonitasoft.forms.client.model.FormWidget; import org.bonitasoft.forms.client.model.ReducedFormWidget.ItemPosition; import org.bonitasoft.forms.client.model.WidgetType; import org.bonitasoft.forms.server.constants.XMLForms; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Spy; import org.mockito.runners.MockitoJUnitRunner; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @RunWith(MockitoJUnitRunner.class) public class XMLWidgetBuilderImplTest { @Spy @InjectMocks XMLWidgetBuilderImpl xmlWidgetBuilderImpl; private Document document; DocumentBuilderFactory factory; @Before public void setUp() { //initMocks(this); factory = DocumentBuilderFactory.newInstance(); } @Test public void shouldParseWidgetReturnThePathIfTheWidgetTypeIsFileDownloadTest() throws Exception { //given DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.newDocument(); Element e = document.createElement("el"); Element initialValue = document.createElement(XMLForms.INITIAL_VALUE); doReturn("style").when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq(XMLForms.STYLE)); doReturn("myId").when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq("@" + XMLForms.ID)); doReturn(WidgetType.FILEDOWNLOAD.toString()).when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq("@" + XMLForms.TYPE)); doReturn(new DefaultNode()).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.MAX_LENGTH)); doReturn(new DefaultNode()).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.MAX_HEIGHT)); doReturn("labelstyle").when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq(XMLForms.LABEL_STYLE)); doReturn("myClass").when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq(XMLForms.CLASSNAME)); doReturn("labelStyle").when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq(XMLForms.LABEL_STYLE)); doReturn("myClass").when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq(XMLForms.INPUT_STYLE)); doReturn(new DefaultNode()).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.LABEL_POSITION)); doReturn(false).when(xmlWidgetBuilderImpl).getBooleanValue(any(Node.class)); doReturn("myOutputType").when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq(XMLForms.FIELD_OUTPUT_TYPE)); doReturn(100).when(xmlWidgetBuilderImpl).getIntValue(any(Node.class)); doReturn(ItemPosition.TOP).when(xmlWidgetBuilderImpl).getItemPositionValue(any(Node.class)); doReturn(ItemPosition.TOP).when(xmlWidgetBuilderImpl).getItemPositionValue(any(Node.class)); doReturn(new DefaultNode()).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.MANDATORY)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.LABEL)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.TITLE)); doReturn(initialValue).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.INITIAL_VALUE)); doReturn(e).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.RESOURCE)); doReturn("myFile.txt").when(xmlWidgetBuilderImpl).getStringByXpath(eq(e), eq(XMLForms.PATH)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.LABEL_BUTTON)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.ITEMS_STYLE)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeListByXpath(any(Node.class), eq(XMLForms.ITEMS_STYLE)); doReturn(null).when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq(XMLForms.ITEMS_STYLE)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.AVAILABLE_VALUES)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.EXPRESSION)); doReturn(e.getChildNodes()).when(xmlWidgetBuilderImpl).getNodeListByXpath(any(Node.class), eq(XMLForms.VALIDATORS + "/" + XMLForms.VALIDATOR)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.DISPLAY_CONDITION)); doReturn(null).when(xmlWidgetBuilderImpl).getStringByXpath(any(Node.class), eq(XMLForms.DISPLAY_FORMAT)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.DISPLAY_ATTACHMENT_IMAGE)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.ALLOW_HTML_IN_LABEL)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.ALLOW_HTML_IN_FIELD)); doReturn(e.getChildNodes()).when(xmlWidgetBuilderImpl) .getNodeListByXpath(any(Node.class), eq(XMLForms.HTML_ATTRIBUTES + "/" + XMLForms.HTML_ATTRIBUTE)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.MAX_ITEMS)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.DELAY_MILLIS)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.POPUP_TOOLTIP)); doReturn(null).when(xmlWidgetBuilderImpl).getNodeByXpath(any(Node.class), eq(XMLForms.SUB_TITLE)); //when Node node = new DefaultNode(); FormWidget formWidget = xmlWidgetBuilderImpl.parseWidget(node, false); //then assertThat("wrong path file", formWidget.getFilePaths().equals("myFile.txt")); } }