// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.wiki;
import static org.junit.Assert.assertEquals;
import static util.RegexTestCase.assertHasRegexp;
import static util.RegexTestCase.assertSubString;
import java.util.List;
import fitnesse.wiki.fs.InMemoryPage;
import org.junit.Before;
import org.junit.Test;
public class RecentChangesWikiPageTest {
private WikiPage rootPage;
private WikiPage newPage;
private WikiPage page1;
private WikiPage page2;
private RecentChangesWikiPage recentChangesWikiPage;
@Before
public void setUp() throws Exception {
rootPage = InMemoryPage.makeRoot("RooT");
newPage = rootPage.addChildPage("SomeNewPage");
page1 = rootPage.addChildPage("PageOne");
page2 = rootPage.addChildPage("PageTwo");
recentChangesWikiPage = new RecentChangesWikiPage();
}
@Test
public void testFirstRecentChange() throws Exception {
assertEquals(false, rootPage.hasChildPage("RecentChanges"));
recentChangesWikiPage.updateRecentChanges(newPage);
assertEquals(true, rootPage.hasChildPage("RecentChanges"));
WikiPage recentChanges = rootPage.getChildPage("RecentChanges");
List<String> lines = recentChangesWikiPage.getRecentChangesLines(recentChanges.getData());
assertEquals(1, lines.size());
assertHasRegexp("SomeNewPage", lines.get(0));
}
@Test
public void testTwoChanges() throws Exception {
recentChangesWikiPage.updateRecentChanges(page1);
recentChangesWikiPage.updateRecentChanges(page2);
WikiPage recentChanges = rootPage.getChildPage("RecentChanges");
List<String> lines = recentChangesWikiPage.getRecentChangesLines(recentChanges.getData());
assertEquals(2, lines.size());
assertHasRegexp("PageTwo", lines.get(0));
assertHasRegexp("PageOne", lines.get(1));
}
@Test
public void testNoDuplicates() throws Exception {
recentChangesWikiPage.updateRecentChanges(page1);
recentChangesWikiPage.updateRecentChanges(page1);
WikiPage recentChanges = rootPage.getChildPage("RecentChanges");
List<String> lines = recentChangesWikiPage.getRecentChangesLines(recentChanges.getData());
assertEquals(1, lines.size());
assertHasRegexp("PageOne", lines.get(0));
}
@Test
public void testMaxSize() throws Exception {
for (int i = 0; i < 101; i++) {
StringBuilder b = new StringBuilder("LotsOfAs");
for (int j = 0; j < i; j++) {
b.append("a");
}
WikiPage page = rootPage.addChildPage(b.toString());
recentChangesWikiPage.updateRecentChanges(page);
}
WikiPage recentChanges = rootPage.getChildPage("RecentChanges");
List<String> lines = recentChangesWikiPage.getRecentChangesLines(recentChanges.getData());
assertEquals(100, lines.size());
}
@Test
public void testUsernameColumnWithoutUser() throws Exception {
recentChangesWikiPage.updateRecentChanges(page1);
WikiPage recentChanges = rootPage.getChildPage("RecentChanges");
List<String> lines = recentChangesWikiPage.getRecentChangesLines(recentChanges.getData());
String line = lines.get(0);
assertSubString("|PageOne||", line);
}
@Test
public void testUsernameColumnWithUser() throws Exception {
PageData data = page1.getData();
data.setAttribute(WikiPageProperty.LAST_MODIFYING_USER, "Aladdin");
page1.commit(data);
recentChangesWikiPage.updateRecentChanges(page1);
WikiPage recentChanges = rootPage.getChildPage("RecentChanges");
List<String> lines = recentChangesWikiPage.getRecentChangesLines(recentChanges.getData());
String line = lines.get(0);
assertSubString("|PageOne|Aladdin|", line);
}
}