package org.jboss.seam.example.rss.test.xml; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertTrue; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.xml.namespace.NamespaceContext; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPathExpressionException; import org.jboss.seam.example.common.test.xml.NodeCondition; import org.jboss.seam.example.common.test.xml.SeamXMLTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.xml.sax.SAXException; public class SeamXMLRSSTest extends SeamXMLTest { public static final String HOME_PAGE = "/rss.seam"; public static final String HOME_PAGE_TITLE = "Title Feed"; public static final String TITLE_XPATH = "/feed/title"; public static final String ATOM_NS_URI = "http://www.w3.org/2005/Atom"; private Document doc; @BeforeMethod public void setDocument() throws IOException, SAXException { doc = db.parse(BROWSER_URL + CONTEXT_PATH + HOME_PAGE); } /** * Verifies that example deploys and has title * * @throws XPathExpressionException If XPath expression cannot be compiled or * executed */ @Test public void testRSSTitle() throws XPathExpressionException { List<Node> list = evaluateXPath(doc.getDocumentElement(), TITLE_XPATH); assertEquals("There is only on title", 1, list.size()); assertTrue("Document title equals to \"Title Feed\"", evaluateCondition(list, titleCondition)); } private final NodeCondition titleCondition = new NodeCondition() { public boolean match(Node node) { if (node instanceof Element) { Element element = (Element) node; return HOME_PAGE_TITLE.equals(element.getTextContent()); } return false; } }; }