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 = "<html entity>";
expected = "html entity";
meta.put("title", input);
actual = tester.convertPagename(page, meta);
assertNotNull(actual);
assertEquals(expected, actual);
assertEquals(expected, page.getName());
input = "" html quotes";
expected = "\" html quotes";
meta.put("title", input);
actual = tester.convertPagename(page, meta);
assertNotNull(actual);
assertEquals(expected, actual);
assertEquals(expected, page.getName());
input = "& 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());
}