// 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.components; import java.util.List; import util.RegexTestCase; import fitnesse.wiki.InMemoryPage; import fitnesse.wiki.PageData; import fitnesse.wiki.WikiPage; public class RecentChangesTest extends RegexTestCase { private WikiPage rootPage; private WikiPage newPage; private WikiPage page1; private WikiPage page2; public void setUp() throws Exception { rootPage = InMemoryPage.makeRoot("RooT"); newPage = rootPage.addChildPage("SomeNewPage"); page1 = rootPage.addChildPage("PageOne"); page2 = rootPage.addChildPage("PageTwo"); } public void tearDown() throws Exception { } public void testFirstRecentChange() throws Exception { assertEquals(false, rootPage.hasChildPage("RecentChanges")); RecentChanges.updateRecentChanges(newPage.getData()); assertEquals(true, rootPage.hasChildPage("RecentChanges")); WikiPage recentChanges = rootPage.getChildPage("RecentChanges"); List<String> lines = RecentChanges.getRecentChangesLines(recentChanges.getData()); assertEquals(1, lines.size()); assertHasRegexp("SomeNewPage", lines.get(0)); } public void testTwoChanges() throws Exception { RecentChanges.updateRecentChanges(page1.getData()); RecentChanges.updateRecentChanges(page2.getData()); WikiPage recentChanges = rootPage.getChildPage("RecentChanges"); List<String> lines = RecentChanges.getRecentChangesLines(recentChanges.getData()); assertEquals(2, lines.size()); assertHasRegexp("PageTwo", lines.get(0)); assertHasRegexp("PageOne", lines.get(1)); } public void testNoDuplicates() throws Exception { RecentChanges.updateRecentChanges(page1.getData()); RecentChanges.updateRecentChanges(page1.getData()); WikiPage recentChanges = rootPage.getChildPage("RecentChanges"); List<String> lines = RecentChanges.getRecentChangesLines(recentChanges.getData()); assertEquals(1, lines.size()); assertHasRegexp("PageOne", lines.get(0)); } public void testMaxSize() throws Exception { for (int i = 0; i < 101; i++) { StringBuffer b = new StringBuffer("LotsOfAs"); for (int j = 0; j < i; j++) b.append("a"); WikiPage page = rootPage.addChildPage(b.toString()); RecentChanges.updateRecentChanges(page.getData()); } WikiPage recentChanges = rootPage.getChildPage("RecentChanges"); List<String> lines = RecentChanges.getRecentChangesLines(recentChanges.getData()); assertEquals(100, lines.size()); } public void testUsernameColumnWithoutUser() throws Exception { RecentChanges.updateRecentChanges(page1.getData()); WikiPage recentChanges = rootPage.getChildPage("RecentChanges"); List<String> lines = RecentChanges.getRecentChangesLines(recentChanges.getData()); String line = lines.get(0).toString(); assertSubString("|PageOne||", line); } public void testUsernameColumnWithUser() throws Exception { PageData data = page1.getData(); data.setAttribute(PageData.LAST_MODIFYING_USER, "Aladdin"); page1.commit(data); RecentChanges.updateRecentChanges(page1.getData()); WikiPage recentChanges = rootPage.getChildPage("RecentChanges"); List<String> lines = RecentChanges.getRecentChangesLines(recentChanges.getData()); String line = lines.get(0).toString(); assertSubString("|PageOne|Aladdin|", line); } }