public void testChangedPagename()

in src/main/java/com/atlassian/uwc/hierarchies/FilepathHierarchyTest.java [557:632]


	public void testChangedPagename() { //UWC-297, could occur with page title framework usage
		File dir = new File("sampleData/hierarchy/basic");
		assertTrue(dir.isDirectory() && dir.exists());
		tester.clearRootNode();
		Properties properties = tester.getProperties();
		properties.put("filepath-hierarchy-ignorable-ancestors", "sampleData/hierarchy/basic");
		
		Vector<Page> pages = new Vector<Page>();
		File[] files = dir.listFiles();
		for (File file : files) {
			if (file.getName().startsWith(".svn")) continue;
			if (file.isDirectory()) {
				File[] children = file.listFiles();
				for (File child : children) {
					if (child.getName().startsWith(".svn")) continue;
					if (child.isFile()) {
						Page page = new Page(child);
						page.setName(child.getName().replaceFirst("\\.txt$", ""));
						page.setPath(child.getPath().replaceFirst("[^\\/]*$", ""));
						pages.add(page);
					}
				}
			}
			else {
				Page page = new Page(file);
				page.setName(file.getName().replaceFirst("\\.txt$", ""));
				page.setPath(file.getPath().replaceFirst("[^\\/]*$", ""));
				pages.add(page);
			}
		}

		//make some page title changes
		for (Page page : pages) {
			if (page.getName().equals("Drink")) {
				page.setName("Liquid");
			}
			if (page.getName().equals("Food")) {
				page.setName("Comestibles");
			}
		}
		
		HierarchyNode root = tester.buildHierarchy(pages);
		assertNotNull(root);
		assertEquals(6, root.countDescendants());
		Collection<HierarchyNode> level1 = root.getChildren();
		assertNotNull(level1);
		assertEquals(2, level1.size());
		for (HierarchyNode lvl1Node : level1) {
			assertNotNull(lvl1Node);
			if ("Food".equals(lvl1Node.getName())) fail("Still have Food node");
			else if ("Food.txt".equals(lvl1Node.getName())) fail("Still have Drink node");
			else if ("Drink".equals(lvl1Node.getName())) fail("Still have Drink node");
			else if ("Drink.txt".equals(lvl1Node.getName())) fail("Still have Drink node");
			else if ("Comestibles".equals(lvl1Node.getName())) {
				assertEquals(3, lvl1Node.countDescendants());
				Collection<HierarchyNode> level2 = lvl1Node.getChildren();
				assertNotNull(level2);
				assertEquals(2, level2.size());
				for (HierarchyNode lvl2Node : level2) {
					if ("Baklava".equals(lvl2Node.getName())) continue;
					if ("Fruit".equals(lvl2Node.getName())) continue;
					else fail("Unexpected node under Comestibles: " + lvl2Node.getName());
				}
			}
			else if ("Liquid".equals(lvl1Node.getName())) {
				assertEquals(2, lvl1Node.countDescendants());
				Collection<HierarchyNode> level2 = lvl1Node.getChildren();
				assertNotNull(level2);
				assertEquals(1, level2.size());
				for (HierarchyNode lvl2Node : level2) {
					if ("Water".equals(lvl2Node.getName())) continue;
					else fail("Unexpected node under Liquid: " + lvl2Node.getName());
				}
			}
		}
	}