/src/com/atlassian/uwc/hierarchies/FilenameHierarchyTest.java
https://bitbucket.org/atlassianlabs/universal-wiki-connector · Java · 252 lines · 200 code · 50 blank · 2 comment · 16 complexity · 374400f1c270927f6ffc58be0e3fd957 MD5 · raw file
- package com.atlassian.uwc.hierarchies;
- import java.io.File;
- import java.util.Collection;
- import java.util.Properties;
- import java.util.Vector;
- import junit.framework.TestCase;
- import org.apache.log4j.Logger;
- import org.apache.log4j.PropertyConfigurator;
- import com.atlassian.uwc.filters.NoSvnFilter;
- import com.atlassian.uwc.ui.Page;
- //NOTE: a valid set of pages for testing will need a valid file associated with that page node
- public class FilenameHierarchyTest extends TestCase {
- FilenameHierarchy tester = null;
- private final String SAMPLEDIR_SIMPLE = "sampleData/hierarchy/filename/simple";
- private final String SAMPLEDIR_ENCODED = "sampleData/hierarchy/filename/urlencoded";
- Logger log = Logger.getLogger(this.getClass());
- Vector<Page> pages = null;
- Properties props = null;
-
- protected void setUp() throws Exception {
- tester = new FilenameHierarchy();
- PropertyConfigurator.configure("log4j.properties");
- pages = new Vector<Page>();
- props = new Properties();
- props.setProperty(FilenameHierarchy.PROPKEY_DELIM, "%2F");
- tester.setProperties(props);
- }
-
- public void testBuildHierarchy_OnePage_OneNode() {
- addOnePageToList(SAMPLEDIR_SIMPLE + File.separator + "Root");
-
- HierarchyNode actual = tester.buildHierarchy(pages);
- assertNotNull(actual);
-
- Collection<HierarchyNode> nodes = actual.getChildren();
- assertNotNull(nodes);
- assertEquals(1, nodes.size());
- for (HierarchyNode root : nodes) {
- assertEquals("Root", root.getName());
-
- Page rootpage = root.getPage();
- assertNotNull(rootpage);
- assertNotNull(rootpage.getName());
- assertEquals("Root", rootpage.getName());
-
- assertTrue(root.getChildren().isEmpty());
- }
-
- }
- public void testBuildHierarchy_OnePage_TwoNodes() {
- addOnePageToList(SAMPLEDIR_SIMPLE + File.separator + "Root%2FLeaf");
-
- HierarchyNode actual = tester.buildHierarchy(pages);
- assertNotNull(actual);
-
- Collection<HierarchyNode> nodes = actual.getChildren();
- assertNotNull(nodes);
- assertEquals(1, nodes.size());
- for (HierarchyNode root : nodes) {
- assertEquals("Root", root.getName());
- assertNull(root.getPage()); //cause we only had the leaf page
-
- Vector<HierarchyNode> children = asVector(root.getChildren());
- assertEquals(1, children.size());
- HierarchyNode child = children.get(0);
- assertEquals("Leaf", child.getName());
-
- Page childpage = child.getPage();
- assertNotNull(childpage);
- assertEquals("Leaf", childpage.getName());
-
- assertTrue(child.getChildren().isEmpty());
- }
- }
-
- public void testBuildHierarchy_OnePage_ThreeNodes() {
- addOnePageToList(SAMPLEDIR_SIMPLE + File.separator + "Root%2FBranch%2FChild");
-
- HierarchyNode actual = tester.buildHierarchy(pages);
- assertNotNull(actual);
-
- Collection<HierarchyNode> nodes = actual.getChildren();
- assertNotNull(nodes);
- assertEquals(1, nodes.size());
- for (HierarchyNode root : nodes) {
- assertEquals("Root", root.getName());
- assertNull(root.getPage());
-
- Vector<HierarchyNode> children = asVector(root.getChildren());
- assertEquals(1, children.size());
- HierarchyNode child = children.get(0);
- assertEquals("Branch", child.getName());
- assertNull(child.getPage());
-
- Vector<HierarchyNode> gchildren = asVector(child.getChildren());
- assertEquals(1, gchildren.size());
- HierarchyNode leaf = gchildren.get(0);
- assertEquals("Child", leaf.getName());
-
- Page leafpage = leaf.getPage();
- assertNotNull(leafpage);
- assertEquals("Child", leafpage.getName());
-
- assertTrue(leaf.getChildren().isEmpty());
- }
- }
-
- public void testBuildHierarchy_TwoPages() {
- addOnePageToList(SAMPLEDIR_SIMPLE + File.separator + "Root%2FLeaf");
- addOnePageToList(SAMPLEDIR_SIMPLE + File.separator + "Root");
-
- HierarchyNode actual = tester.buildHierarchy(pages);
- assertNotNull(actual);
-
- Collection<HierarchyNode> nodes = actual.getChildren();
- assertNotNull(nodes);
- assertEquals(1, nodes.size());
- for (HierarchyNode root : nodes) {
- assertEquals("Root", root.getName());
- Page rootpage = root.getPage();
- assertNotNull(rootpage);
- assertEquals("Root", rootpage.getName());
-
- Vector<HierarchyNode> children = asVector(root.getChildren());
- assertEquals(1, children.size());
- HierarchyNode child = children.get(0);
- assertEquals("Leaf", child.getName());
-
- Page childpage = child.getPage();
- assertNotNull(childpage);
- assertEquals("Leaf", childpage.getName());
-
- assertTrue(child.getChildren().isEmpty());
- }
- }
- public void testBuildHierarchy_Simple() {
- File dir = new File(SAMPLEDIR_SIMPLE);
- File[] listFiles = dir.listFiles(new NoSvnFilter());
- assertEquals(4, listFiles.length);
- for (File file : listFiles) {
- pages.add(new Page(file));
- }
-
- HierarchyNode actual = tester.buildHierarchy(pages);
- assertNotNull(actual);
-
- Vector<HierarchyNode> nodes = asVector(actual.getChildren());
- assertNotNull(nodes);
- assertEquals(1, nodes.size());
- HierarchyNode root = nodes.get(0);
- assertNotNull(root.getPage());
- assertEquals("Root", root.getName());
- assertEquals("Root", root.getPage().getName());
-
- Vector<HierarchyNode> nodes2 = asVector(root.getChildren());
- assertNotNull(nodes2);
- assertEquals(2, nodes2.size());
- int branchindex = (nodes2.get(0).getName().startsWith("B"))?0:1; //we do this 'cause Sets aren't predictable
- int leafindex = branchindex == 0?1:0;
- HierarchyNode branch = nodes2.get(branchindex);
- HierarchyNode leaf = nodes2.get(leafindex);
- assertNotNull(leaf.getPage());
- assertEquals("Leaf", leaf.getName());
- assertEquals("Leaf", leaf.getPage().getName());
- assertTrue(leaf.getChildren().isEmpty());
- assertNotNull(branch.getPage());
- assertEquals("Branch", branch.getName());
- assertEquals("Branch", branch.getPage().getName());
-
- Vector<HierarchyNode> nodes3 = asVector(branch.getChildren());
- assertNotNull(nodes3);
- assertEquals(1, nodes3.size());
- HierarchyNode child = nodes3.get(0);
- assertNotNull(child.getPage());
- assertEquals("Child", child.getName());
- assertEquals("Child", child.getPage().getName());
- assertTrue(child.getChildren().isEmpty());
- }
- public void testBuildHierarchy_UrlEncoded() {
- File dir = new File(SAMPLEDIR_ENCODED);
- File[] listFiles = dir.listFiles(new NoSvnFilter());
- assertEquals(5, listFiles.length);
- for (File file : listFiles) {
- pages.add(new Page(file));
- }
-
- HierarchyNode actual = tester.buildHierarchy(pages);
- assertNotNull(actual);
-
- Vector<HierarchyNode> nodes = asVector(actual.getChildren());
- assertNotNull(nodes);
- assertEquals(1, nodes.size());
- HierarchyNode root = nodes.get(0);
- assertNotNull(root.getPage());
- assertEquals("Parent", root.getName());
- assertEquals("Parent", root.getPage().getName());
-
- Vector<HierarchyNode> nodes2 = asVector(root.getChildren());
- assertNotNull(nodes2);
- assertEquals(4, nodes2.size());
- for (HierarchyNode node: nodes2) {
- assertNotNull(node.getPage());
- assertTrue(node.getChildren().isEmpty());
-
- String exp = null;
- if (node.getName().endsWith("Foo")) {
- exp = "Child Foo";
- }
- else if (node.getName().endsWith("Bar")) {
- exp = "Child,Bar";
- }
- else if (node.getName().endsWith("Baz")) {
- exp = "Child'Baz";
- }
- else if (node.getName().endsWith("Xyz")) {
- exp = "Child&Xyz";
- }
- else fail("Wrong Node name: " + exp);
- assertEquals(exp, node.getName());
- assertEquals(exp, node.getPage().getName());
- }
-
- }
- // helper methods
- private void addOnePageToList(String path) {
- File file = new File(path);
- assertTrue(file.exists());
- Page page = new Page(file);
- pages.add(page);
- }
-
- private Vector<HierarchyNode> asVector(Collection<HierarchyNode> children) {
- Vector<HierarchyNode> nodes = new Vector<HierarchyNode>();
- nodes.addAll(children);
- return nodes;
- }
-
- }