/** * Copyright (C) 2012-2014 Gist Labs, LLC. (http://gistlabs.com) * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package com.gistlabs.mechanize.document.html; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import org.junit.Test; import com.gistlabs.mechanize.MechanizeTestCase; import com.gistlabs.mechanize.document.node.Node; import com.gistlabs.mechanize.document.node.NodeVisitor; import com.gistlabs.mechanize.util.apache.ContentType; /** * @author Martin Kersten <Martin.Kersten.mk@gmail.com> */ public class HtmlNodeTest extends MechanizeTestCase { protected String contentType() { return ContentType.TEXT_HTML.getMimeType(); } @Test public void testGettingTheParent() { addPageRequest("http://test.com", newHtml("Test Page", "<a href=\"link\">link</a>")); HtmlDocument page = agent().get("http://test.com"); HtmlElement element = page.find("a[href*='link']"); assertEquals("body", element.getParent().getName()); assertEquals("html", element.getParent().getParent().getName()); assertNull(element.getParent().getParent().getParent().getParent()); } @Test public void testVisitWithNodeVisitor() { addPageRequest("http://test.com", newHtml("Test Page", "<a href=\"link\">link</a>")); HtmlDocument page = agent().get("http://test.com"); MyNodeVisitor visitor = new MyNodeVisitor(); page.getRoot().visit(visitor); assertEquals("<#root<html<head<title<null>>><body<a>>>>", visitor.result.toString()); } public static class MyNodeVisitor implements NodeVisitor { StringBuilder result = new StringBuilder(); @Override public boolean beginNode(Node node) { result.append("<"); result.append(node.getName()); return node.getName() != null && !node.getName().equals("a"); } @Override public void endNode(Node node) { result.append(">"); } } }