blob: a0905d26a2526d20b34d24555d2b68a9798b89df [file] [log] [blame]
package com.atlassian.uwc.converters.dokuwiki;
import java.io.File;
import java.io.IOException;
import java.util.Vector;
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import com.atlassian.uwc.ui.Comment;
import com.atlassian.uwc.ui.FileUtils;
import com.atlassian.uwc.ui.Page;
public class DiscussionConverterTest extends TestCase {
private static final String METADIR = "sampleData/dokuwiki/junit_resources/meta";
private static final String SAMPLEMETA = METADIR + "/SampleDokuwiki-InputDiscussion.comments";
private static final String PAGESDIR = "sampleData/dokuwiki/junit_resources/pages";
private static final String SAMPLEPAGE = PAGESDIR+"/SampleDokuwiki-InputDiscussion.txt";
DiscussionConverter tester = null;
Logger log = Logger.getLogger(this.getClass());
protected void setUp() throws Exception {
tester = new DiscussionConverter();
PropertyConfigurator.configure("log4j.properties");
tester.getProperties().setProperty("meta-dir", METADIR);
tester.getProperties().setProperty("filepath-hierarchy-ignorable-ancestors", PAGESDIR);
super.setUp();
}
public void testHasDiscussion() {
String input;
boolean expected, actual;
input = "foobar\n" +
"~~DISCUSSION~~\n";
expected = true;
actual = tester.hasDiscussion(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = "testing\n";
expected = false;
actual = tester.hasDiscussion(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testGetMetaFilepath() {
Page page = new Page(new File(SAMPLEPAGE));
String expected = "sampleData/dokuwiki/junit_resources/meta/SampleDokuwiki-InputDiscussion.comments";
String actual = tester.getMetaFilename(page.getFile().getPath(), ".comments");
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testGetCommentData() {
Page page = new Page(new File(SAMPLEPAGE));
String actual = tester.getCommentData(page.getFile());
assertNotNull(actual);
assertTrue(actual.contains("Foo Bar"));
assertTrue(actual.contains("foo"));
assertTrue(actual.contains("Testing 123"));
}
public void testGetNumComments() throws IOException {
String input = FileUtils.readTextFile(new File(SAMPLEMETA));
int expected = 1;
int actual = tester.getNumComments(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = FileUtils.readTextFile(new File(METADIR+"/SampleDokuwiki-InputDiscussion_mult.comments"));
expected = 2;
actual = tester.getNumComments(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = FileUtils.readTextFile(new File(METADIR+"/SampleDokuwiki-InputDiscussion_none.comments"));
expected = 0;
actual = tester.getNumComments(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = "a:2:{s:5:\"title\";N;s:6:\"status\";i:1;}\n";
expected = 0;
actual = tester.getNumComments(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testSeperateComments() throws IOException {
String input, expected, actual;
input = FileUtils.readTextFile(new File(SAMPLEMETA));
Vector<String> all = tester.seperateComments(input);
assertNotNull(all);
assertEquals(1, all.size());
expected = "s:32:\"4df1fa69356ef92dd48fca5f004b3dc5\";a:8:{s:4:\"user\";a:5:{s:2:\"id\";s:3:\"foo\";s:4:\"name\";s:15:\"Foo Bar\";s:4:\"mail\";s:15:\"foo@bar.org\";s:7:\"address\";s:0:\"\";s:3:\"url\";s:0:\"\";}s:4:\"date\";a:1:{s:7:\"created\";i:1333093999;}s:4:\"show\";b:1;s:3:\"raw\";s:65:\"Testing 123\";s:5:\"xhtml\";s:77:\"\n" +
"<p>\n" +
"Testing 123\n" +
"\n" +
"</p>\n" +
"\";s:6:\"parent\";N;s:7:\"replies\";a:0:{}s:3:\"cid\";s:32:\"4df1fa69356ef92dd48fca5f004b3dc5\";}";
actual = all.get(0);
assertNotNull(actual);
assertEquals(expected, actual);
all.clear();
input = FileUtils.readTextFile(new File(METADIR+"/SampleDokuwiki-InputDiscussion_mult.comments"));
all = tester.seperateComments(input);
assertNotNull(all);
assertEquals(2, all.size());
expected = "s:32:\"5efeab0c9a77feb0248e8d84029b345f\";a:8:{s:4:\"user\";a:5:{s:2:\"id\";s:3:\"foo\";s:4:\"name\";s:11:\"Foo Bar\";s:4:\"mail\";s:22:\"foo@bar.org.br\";s:7:\"address\";s:0:\"\";s:3:\"url\";s:0:\"\";}s:4:\"date\";a:1:{s:7:\"created\";i:1253800808;}s:4:\"show\";b:1;s:3:\"raw\";s:110:\"tralala\";s:5:\"xhtml\";s:122:\"\n" +
"<p>\n" +
"tralala\n" +
"\n" +
"</p>\n" +
"\";s:6:\"parent\";N;s:7:\"replies\";a:0:{}s:3:\"cid\";s:32:\"5efeab0c9a77feb0248e8d84029b345f\";}";
actual = all.get(0);
assertNotNull(actual);
assertEquals(expected, actual);
expected = "s:32:\"daa35c667fbb6b1c369a711aeb5adad6\";a:8:{s:4:\"user\";a:5:{s:2:\"id\";s:3:\"ella\";s:4:\"name\";s:11:\"Ella Fitzgerald\";s:4:\"mail\";s:24:\"ella@jazz.org\";s:7:\"address\";s:0:\"\";s:3:\"url\";s:0:\"\";}s:4:\"date\";a:1:{s:7:\"created\";i:1254911413;}s:4:\"show\";b:1;s:3:\"raw\";s:122:\"bedoobedoo whoa!\";s:5:\"xhtml\";s:212:\"\n" +
"<p>\n" +
"bedoobedoo <b>whoa!</b>\n" +
"\n" +
"</p>\n" +
"\";s:6:\"parent\";N;s:7:\"replies\";a:0:{}s:3:\"cid\";s:32:\"daa35c667fbb6b1c369a711aeb5adad6\";}";
actual = all.get(1);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testParseComment() {
String input, expected;
String xhtml = "<p>\n" +
"bedoobedoo <b>whoa!</b>\n" +
"\n" +
"</p>\n";
input = "s:32:\"daa35c667fbb6b1c369a711aeb5adad6\";a:8:{s:4:\"user\";a:5:{s:2:\"id\";s:3:\"ella\";s:4:\"name\";s:11:\"Ella Fitzgerald\";s:4:\"mail\";s:24:\"ella@jazz.org\";s:7:\"address\";s:0:\"\";s:3:\"url\";s:0:\"\";}s:4:\"date\";a:1:{s:7:\"created\";i:1254911413;}s:4:\"show\";b:1;s:3:\"raw\";s:122:\"bedoobedoo whoa!\";s:5:\"xhtml\";s:212:\"\n" + xhtml + "\";s:6:\"parent\";N;s:7:\"replies\";a:0:{}s:3:\"cid\";s:32:\"daa35c667fbb6b1c369a711aeb5adad6\";}";
Comment actual = tester.parseComment(input);
expected = "ella";
assertNotNull(actual);
assertEquals(expected, actual.creator);
expected = "\n"+xhtml;
assertNotNull(actual);
assertEquals(expected, actual.text);
expected = "2009:10:07:06:30:13:00";
assertNotNull(actual);
assertEquals(expected, actual.timestamp);
assertTrue(actual.isXhtml());
}
public void testConvert_One() throws IOException {
File file = new File(SAMPLEPAGE);
Page page = new Page(file);
page.setOriginalText(FileUtils.readTextFile(file));
tester.convert(page);
Vector<Comment> actual = page.getAllCommentData();
assertNotNull(actual);
assertEquals(1, actual.size());
assertEquals("foo", actual.get(0).creator);
assertTrue(actual.get(0).text.contains("<p>\nTesting 123"));
}
public void testConvert_Mult() throws IOException {
String path = PAGESDIR+"/SampleDokuwiki-InputDiscussion_mult.txt";
File file = new File(path);
Page page = new Page(file);
page.setOriginalText(FileUtils.readTextFile(file));
tester.convert(page);
Vector<Comment> actual = page.getAllCommentData();
assertNotNull(actual);
assertEquals(2, actual.size());
assertEquals("foo", actual.get(0).creator);
assertTrue(actual.get(0).text.contains("tralala"));
assertEquals("ella", actual.get(1).creator);
assertTrue(actual.get(1).text.contains("<b>whoa!</b>"));
}
public void testConvert_None() throws IOException {
String path = PAGESDIR+"/SampleDokuwiki-InputDiscussion_none.txt";
File file = new File(path);
Page page = new Page(file);
page.setOriginalText(FileUtils.readTextFile(file));
tester.convert(page);
assertNotNull(page.getAllCommentData());
assertEquals(0, page.getAllCommentData().size());
}
public void testConvert_NoID() throws IOException {
String path = PAGESDIR+"/SampleDokuwiki-InputDiscussion_noid.txt";
File file = new File(path);
Page page = new Page(file);
page.setOriginalText(FileUtils.readTextFile(file));
tester.convert(page);
Vector<Comment> actual = page.getAllCommentData();
assertNotNull(actual);
for (Comment comment : actual) {
assertNotNull(comment);
assertEquals("myrnaloy@thinman.org", comment.creator);
assertEquals("\n" +
"<p>\n" +
"Asta!\n" +
"\n" +
"</p>\n", comment.text);
}
}
}