package com.opensymphony.xwork2.config.providers; import com.opensymphony.xwork2.XWorkTestCase; import static org.easymock.EasyMock.*; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.util.Map; /** * <code>XmlHelperTest</code> * * @author <a href="mailto:hermanns@aixcept.de">Rainer Hermanns</a> * @version $Id$ */ public class XmlHelperTest extends XWorkTestCase { public void testGetContent1() throws Exception { // set up Node Node mockNode = (Node) createMock(Node.class); expect(mockNode.getNodeValue()).andStubReturn("testing testing 123"); expect(mockNode.getNodeType()).andStubReturn(Node.TEXT_NODE); // set up NodeList NodeList mockNodeList = (NodeList) createMock(NodeList.class); expect(mockNodeList.getLength()).andStubReturn(1); expect(mockNodeList.item(0)).andStubReturn(mockNode); // set up Element Element mockElement = (Element) createMock(Element.class); expect(mockElement.getChildNodes()).andStubReturn(mockNodeList); replay(mockNode, mockNodeList, mockElement); String result = XmlHelper.getContent(mockElement); assertEquals(result, "testing testing 123"); verify(mockNode, mockNodeList, mockElement); } public void testGetContent2() throws Exception { // set up Node Node mockNode1 = (Node) createMock(Node.class); expect(mockNode1.getNodeValue()).andStubReturn("testing testing 123"); expect(mockNode1.getNodeType()).andStubReturn(Node.TEXT_NODE); Node mockNode2 = (Node) createMock(Node.class); expect(mockNode2.getNodeValue()).andStubReturn("comment 1"); expect(mockNode2.getNodeType()).andStubReturn(Node.COMMENT_NODE); Node mockNode3 = (Node) createMock(Node.class); expect(mockNode3.getNodeValue()).andStubReturn(" tmjee "); expect(mockNode3.getNodeType()).andStubReturn(Node.TEXT_NODE); Node mockNode4 = (Node) createMock(Node.class); expect(mockNode4.getNodeValue()).andStubReturn(" phil "); expect(mockNode4.getNodeType()).andStubReturn(Node.TEXT_NODE); Node mockNode5 = (Node) createMock(Node.class); expect(mockNode5.getNodeValue()).andStubReturn("comment 2"); expect(mockNode5.getNodeType()).andStubReturn(Node.COMMENT_NODE); Node mockNode6 = (Node) createMock(Node.class); expect(mockNode6.getNodeValue()).andStubReturn("comment 3"); expect(mockNode6.getNodeType()).andStubReturn(Node.COMMENT_NODE); // set up NodeList NodeList mockNodeList = (NodeList) createMock(NodeList.class); expect(mockNodeList.getLength()).andStubReturn(6); expect(mockNodeList.item(0)).andStubReturn(mockNode1); expect(mockNodeList.item(1)).andStubReturn(mockNode2); expect(mockNodeList.item(2)).andStubReturn(mockNode3); expect(mockNodeList.item(3)).andStubReturn(mockNode4); expect(mockNodeList.item(4)).andStubReturn(mockNode5); expect(mockNodeList.item(5)).andStubReturn(mockNode6); // set up Element Element mockElement = (Element) createMock(Element.class); expect(mockElement.getChildNodes()).andStubReturn(mockNodeList); replay(mockNode1, mockNode2, mockNode3, mockNode4, mockNode5, mockNode6, mockNodeList, mockElement); String result = XmlHelper.getContent(mockElement); assertEquals(result, "testing testing 123tmjeephil"); verify(mockNode1, mockNode2, mockNode3, mockNode4, mockNode5, mockNode6, mockNodeList, mockElement); } public void testGetParams() throws Exception { // <param name="param1">value1</param> Node mockNode1 = (Node) createMock(Node.class); expect(mockNode1.getNodeValue()).andStubReturn("value1"); expect(mockNode1.getNodeType()).andStubReturn(Node.TEXT_NODE); NodeList mockNodeList1 = (NodeList) createMock(NodeList.class); expect(mockNodeList1.getLength()).andStubReturn(1); expect(mockNodeList1.item(0)).andStubReturn(mockNode1); Element mockParamElement1 = (Element) createMock(Element.class); expect(mockParamElement1.getNodeName()).andStubReturn("param"); expect(mockParamElement1.getNodeType()).andStubReturn(Node.ELEMENT_NODE); expect(mockParamElement1.getAttribute("name")).andStubReturn("param1"); expect(mockParamElement1.getChildNodes()).andStubReturn(mockNodeList1); replay(mockNode1, mockNodeList1, mockParamElement1); // <param name="param2">value2</param> Node mockNode2 = (Node) createMock(Node.class); expect(mockNode2.getNodeValue()).andStubReturn("value2"); expect(mockNode2.getNodeType()).andStubReturn(Node.TEXT_NODE); NodeList mockNodeList2 = (NodeList) createMock(NodeList.class); expect(mockNodeList2.getLength()).andStubReturn(1); expect(mockNodeList2.item(0)).andStubReturn(mockNode2); Element mockParamElement2 = (Element) createMock(Element.class); expect(mockParamElement2.getNodeName()).andStubReturn("param"); expect(mockParamElement2.getNodeType()).andStubReturn(Node.ELEMENT_NODE); expect(mockParamElement2.getAttribute("name")).andStubReturn("param2"); expect(mockParamElement2.getChildNodes()).andStubReturn(mockNodeList2); replay(mockNode2, mockNodeList2, mockParamElement2); // <some_element> // ... // </some_element> NodeList mockElementNodeList = (NodeList) createMock(NodeList.class); expect(mockElementNodeList.getLength()).andStubReturn(2); expect(mockElementNodeList.item(0)).andStubReturn(mockParamElement2); expect(mockElementNodeList.item(1)).andStubReturn(mockParamElement1); Element element = (Element) createMock(Element.class); expect(element.getChildNodes()).andStubReturn(mockElementNodeList); replay(mockElementNodeList, element); Map params = XmlHelper.getParams(element); assertNotNull(params); assertEquals(params.size(), 2); assertEquals(params.get("param1"), "value1"); assertEquals(params.get("param2"), "value2"); verify(mockNode1, mockNodeList1, mockParamElement1, mockNode2, mockNodeList2, mockParamElement2, mockElementNodeList, element); } }