public void testConvertPagename()

in src/main/java/com/atlassian/uwc/hierarchies/SmfHierarchyTest.java [292:485]


	public void testConvertPagename() {
		String input, expected, actual;
		Page page = new Page(null);
		page.setName("filename.txt");
		Properties meta = new Properties();
		
		input = "Bad characters in title :@/\\|^#;[]{}<>; foobar";
		expected = "Bad characters in title  foobar";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		input = "~tilde";
		expected = "tilde";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		input = "..dots";
		expected = "dots";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		input = "$dollar";
		expected = "dollar";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
	
		input = "";
		expected = "No Title";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
	
		tester.clearCollisions();//not testing namespace collisions yet
		input = "..";
		expected = "No Title";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		//entities
		input = "&lt;html entity&gt;";
		expected = "html entity";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());

		input = "&quot; html quotes";
		expected = "\" html quotes";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		input = "&amp; html quotes";
		expected = "& html quotes";
		meta.put("title", input);
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());

		//namespace collisions
		tester.clearCollisions();
		input = "namespace collision";
		expected = "namespace collision";
		meta.put("title", input);
		meta.put("username", "admin");
		meta.put("time", "1245696200");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());

		input = "namespace collision";
		expected = "namespace collision - admin - 2009-06-22 244PM";
		meta.put("title", input);
		meta.put("username", "admin");
		meta.put("time", "1245696264");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());

		//dumb chars in username (SMF allows semi-colons in usernames! o-O)
		input = "namespace collision";
		expected = "namespace collision - admin - 2009-06-22 245PM";
		meta.put("title", input);
		meta.put("username", "admin;");
		meta.put("time", "1245696300");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		//what if the name and timestamp isn't enough? (unlikely, but still)
		input = "namespace collision";
		expected = "namespace collision - admin - 2009-06-22 245PM - No.2";
		meta.put("title", input);
		meta.put("username", "admin:");
		meta.put("time", "1245696300");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		input = "namespace collision";
		expected = "namespace collision - admin - 2009-06-22 245PM - No.3";
		meta.put("title", input);
		meta.put("username", "admin:");
		meta.put("time", "1245696300");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		//custom date format
		input = "namespace collision";
		expected = "namespace collision - admin - 062209 1445";
		meta.put("title", input);
		meta.put("username", "admin:");
		meta.put("time", "1245696300");
		tester.getProperties().setProperty("title-date-format", "MMddyy HHmm");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		//bad custom date format
		input = "namespace collision";
		expected = "namespace collision - admin - 2009-06-22 1445";
		meta.put("title", input);
		meta.put("username", "admin:");
		meta.put("time", "1245696300");
		//format has disallowed confluence title character (:)
		tester.getProperties().setProperty("title-date-format", "yyyy-MM-dd HH:mm");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());

		input = "namespace collision";
		expected = "namespace collision - admin - 2009-06-22 245PM - No.4";
		meta.put("title", input);
		meta.put("username", "admin:");
		meta.put("time", "1245696300");
		//format has disallowed confluence title character (:)
		tester.getProperties().setProperty("title-date-format", "abc%%defg");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		//what if the poster or time is null
		input = "namespace collision";
		expected = "namespace collision - null - 2009-06-22 245PM";
		meta.put("title", input);
		meta.put("username", "null");
		meta.put("time", "1245696300");
		tester.getProperties().remove("title-date-format");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
		
		input = "namespace collision";
		expected = "namespace collision - admin";
		meta.put("title", input);
		meta.put("username", "admin");
		meta.put("time", "null");
		tester.getProperties().remove("title-date-format");
		actual = tester.convertPagename(page, meta);
		assertNotNull(actual);
		assertEquals(expected, actual);
		assertEquals(expected, page.getName());
	}