package org.openhab.habdroid.model;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class OpenHAB1WidgetTest {
OpenHABWidget rootWidget = mock(OpenHAB1Widget.class);
@Test
public void createOpenHABWidgetFromNode_createsOpenHAB1Widget() throws Exception {
OpenHABWidget sut = OpenHAB1Widget.createOpenHABWidgetFromNode(rootWidget, createXmlNode());
assertTrue(sut instanceof OpenHAB1Widget);
}
@Test
public void getIconPath_iconExists_returnIconUrlfromImages() throws Exception {
OpenHABWidget sut = OpenHAB1Widget.createOpenHABWidgetFromNode(rootWidget, createXmlNode());
assertEquals("images/groupicon.png", sut.getIconPath());
}
private Node createXmlNode() throws Exception {
String xml = "" +
"<widget>" +
" <widgetId>demo</widgetId>" +
" <type>Group</type>" +
" <label>Group1</label>" +
" <icon>groupicon</icon>" +
" <url>http://localhost/url</url>" +
" <minValue>0.0</minValue>" +
" <maxValue>10.0</maxValue>" +
" <step>1</step>" +
" <refresh>10</refresh>" +
" <period>D</period>" +
" <service>D</service>" +
" <height>10</height>" +
" <iconcolor>white</iconcolor>" +
" <labelcolor>white</labelcolor>" +
" <valuecolor>white</valuecolor>" +
" <encoding></encoding>" +
" <mapping>" +
" <command>ON</command>\n" +
" <label>On</label>" +
" </mapping>" +
" <item>" +
" <type>GroupItem</type>" +
" <name>group1</name>" +
" <state>Undefined</state>" +
" <link>http://localhost/rest/items/group1</link>" +
" </item>" +
" <linkedPage>" +
" <id>0001</id>" +
" <title>LinkedPage</title>" +
" <icon>linkedpageicon</icon>" +
" <link>http://localhost/rest/sitemaps/demo/0001</link>" +
" <leaf>false</leaf>" +
" </linkedPage>" +
" <widget>" +
" <widgetId>demo11</widgetId>" +
" </widget>" +
"</widget>";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
Node rootNode = document.getFirstChild();
return rootNode;
}
}