diff options
author | Chris Goldthorpe | 2009-10-13 19:41:39 +0000 |
---|---|---|
committer | Chris Goldthorpe | 2009-10-13 19:41:39 +0000 |
commit | bd70108ccf37497730eeab99dc16314969cb61e5 (patch) | |
tree | f00e3c483034c0a2babf9a59db076f73dbfe1a20 | |
parent | 25d2672149406126d87c796a9b38665933996312 (diff) | |
download | eclipse.platform.ua-bd70108ccf37497730eeab99dc16314969cb61e5.tar.gz eclipse.platform.ua-bd70108ccf37497730eeab99dc16314969cb61e5.tar.xz eclipse.platform.ua-bd70108ccf37497730eeab99dc16314969cb61e5.zip |
Add TocServletTest
4 files changed, 138 insertions, 1 deletions
diff --git a/org.eclipse.ua.tests/data/help/toc/filteredToc/nonPrimaryToc.xml b/org.eclipse.ua.tests/data/help/toc/filteredToc/nonPrimaryToc.xml new file mode 100644 index 000000000..23defd251 --- /dev/null +++ b/org.eclipse.ua.tests/data/help/toc/filteredToc/nonPrimaryToc.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<toc label="Non primary toc"> + <topic href="data/help/index/topic1.html" label="Topic"> + </topic> +</toc> diff --git a/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/remote/AllRemoteTests.java b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/remote/AllRemoteTests.java index 7e37745fd..b32aaab38 100755 --- a/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/remote/AllRemoteTests.java +++ b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/remote/AllRemoteTests.java @@ -29,8 +29,9 @@ public class AllRemoteTests extends TestSuite { * Constructs a new test suite. */ public AllRemoteTests() { - addTestSuite(SearchServletTest.class); addTestSuite(RemotePreferenceTest.class); + addTestSuite(TocServletTest.class); + addTestSuite(SearchServletTest.class); addTestSuite(SearchUsingRemoteHelp.class); } } diff --git a/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/remote/TocServletTest.java b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/remote/TocServletTest.java new file mode 100644 index 000000000..c2a8a291b --- /dev/null +++ b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/remote/TocServletTest.java @@ -0,0 +1,127 @@ +/******************************************************************************* + * Copyright (c) 2009 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.ua.tests.help.remote; + +import java.io.InputStream; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import junit.framework.TestCase; + +import org.eclipse.help.internal.base.BaseHelpSystem; +import org.eclipse.help.internal.entityresolver.LocalEntityResolver; +import org.eclipse.help.internal.server.WebappManager; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +public class TocServletTest extends TestCase { + + private int mode; + + protected void setUp() throws Exception { + BaseHelpSystem.ensureWebappRunning(); + mode = BaseHelpSystem.getMode(); + BaseHelpSystem.setMode(BaseHelpSystem.MODE_INFOCENTER); + } + + protected void tearDown() throws Exception { + BaseHelpSystem.setMode(mode); + } + + public void testTocServletContainsUAToc() throws Exception { + Node root = getTocContributions("en"); + Element[] UARoot = findContributionById(root, "/org.eclipse.ua.tests/data/help/toc/root.xml"); + assertEquals(1, UARoot.length); + } + + public void testTocServletContainsFilteredToc() throws Exception { + Node root = getTocContributions("en"); + Element[] UARoot = findContributionById(root, "/org.eclipse.ua.tests/data/help/toc/filteredToc/toc.xml"); + assertEquals(1, UARoot.length); + } + + public void testTocServletContainsUnlinkedToc() throws Exception { + Node root = getTocContributions("en"); + Element[] UARoot = findContributionById(root, "/org.eclipse.ua.tests/data/help/toc/filteredToc/nonPrimaryToc.xml"); + assertEquals(1, UARoot.length); + } + + public void testReadEnToc() throws Exception { + Node root = getTocContributions("en"); + Element[] uaRoot = findContributionById(root, "/org.eclipse.ua.tests/data/help/search/toc.xml"); + assertEquals(1, uaRoot.length); + Element[] toc = findChildren(uaRoot[0], "toc", "label", "search"); + assertEquals(1, toc.length); + Element[] topicSearch = findChildren(toc[0], "topic", "label", "search"); + assertEquals(1, topicSearch.length); + Element[] topicEn = findChildren(topicSearch[0], "topic", "label", "testen.html"); + assertEquals(1, topicEn.length); + Element[] topicDe = findChildren(topicSearch[0], "topic", "label", "testde.html"); + assertEquals(0, topicDe.length); + } + + public void testReadDeToc() throws Exception { + Node root = getTocContributions("de"); + Element[] uaRoot = findContributionById(root, "/org.eclipse.ua.tests/data/help/search/toc.xml"); + assertEquals(1, uaRoot.length); + Element[] toc = findChildren(uaRoot[0], "toc", "label", "search"); + assertEquals(1, toc.length); + Element[] topicSearch = findChildren(toc[0], "topic", "label", "search"); + assertEquals(1, topicSearch.length); + Element[] topicEn = findChildren(topicSearch[0], "topic", "label", "testen.html"); + assertEquals(0, topicEn.length); + Element[] topicDe = findChildren(topicSearch[0], "topic", "label", "testde.html"); + assertEquals(1, topicDe.length); + } + + private Element[] findContributionById(Node root, String id) { + return findChildren(root, "tocContribution", "id", id); + } + + private Element[] findChildren(Node parent, String childKind, String attributeName, String attributeValue) { + NodeList contributions = parent.getChildNodes(); + List results = new ArrayList(); + for (int i = 0; i < contributions.getLength(); i++) { + Node next = contributions.item(i); + if (next instanceof Element) { + Element nextElement = (Element)next; + if ( childKind.equals(nextElement.getTagName()) && attributeValue.equals(nextElement.getAttribute(attributeName))) { + + results.add(next); + } + } + } + return (Element[]) results.toArray(new Element[results.size()]); + } + + + private Node getTocContributions( String locale) + throws Exception { + int port = WebappManager.getPort(); + URL url = new URL("http", "localhost", port, "/help/toc?lang=" + locale); + InputStream is = url.openStream(); + InputSource inputSource = new InputSource(is); + DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + documentBuilder.setEntityResolver(new LocalEntityResolver()); + Document document = documentBuilder.parse(inputSource); + Node root = document.getFirstChild(); + assertEquals("tocContributions", root.getNodeName()); + return root; + } + +} diff --git a/org.eclipse.ua.tests/plugin.xml b/org.eclipse.ua.tests/plugin.xml index aff9ece16..709c22fe2 100644 --- a/org.eclipse.ua.tests/plugin.xml +++ b/org.eclipse.ua.tests/plugin.xml @@ -468,6 +468,10 @@ <tocProvider class="org.eclipse.ua.tests.help.toc.UaTestTocProvider"> </tocProvider> + <toc + file="data/help/toc/filteredToc/nonPrimaryToc.xml" + primary="false"> + </toc> </extension> <extension point= "org.eclipse.help.contentExtension"> |