001: package fitnesse.responders;
002:
003: import junit.framework.TestCase;
004: import fitnesse.wiki.*;
005: import fitnesse.testutil.FitNesseUtil;
006: import fitnesse.responders.run.*;
007:
008: public class WikiImportTestEventListenerTest extends TestCase {
009: private WikiImportTestEventListener eventListener;
010: private MockTestResponder testResponder;
011: private MockSuiteResponder suiteResponder;
012: private WikiPage pageOne;
013: private MockWikiImporterFactory importerFactory;
014: private WikiPage childOne;
015: private WikiPage childTwo;
016:
017: public void setUp() throws Exception {
018: WikiPage root = InMemoryPage.makeRoot("RooT");
019: pageOne = root.addChildPage("PageOne");
020: childOne = pageOne.addChildPage("ChildOne");
021: childTwo = pageOne.addChildPage("ChildTwo");
022:
023: importerFactory = new MockWikiImporterFactory();
024: eventListener = new WikiImportTestEventListener(importerFactory);
025: testResponder = new MockTestResponder();
026: suiteResponder = new MockSuiteResponder();
027: }
028:
029: public void testRunWithTestingOnePage() throws Exception {
030: addImportPropertyToPage(pageOne, false, true);
031:
032: PageData data = pageOne.getData();
033: eventListener.notifyPreTest(testResponder, data);
034:
035: assertEquals(MockWikiImporter.mockContent, pageOne.getData()
036: .getContent());
037: assertEquals(MockWikiImporter.mockContent, data.getContent());
038: assertEquals("Updating imported content...done", sentMessages);
039: }
040:
041: public void testRunWithTestingOnePageWithoutAutoUpdate()
042: throws Exception {
043: addImportPropertyToPage(pageOne, false, false);
044:
045: PageData data = pageOne.getData();
046: eventListener.notifyPreTest(testResponder, data);
047:
048: assertEquals("", pageOne.getData().getContent());
049: assertEquals("", data.getContent());
050: assertEquals("", sentMessages);
051: }
052:
053: public void testErrorOccured() throws Exception {
054: importerFactory.mockWikiImporter.fail = true;
055: addImportPropertyToPage(pageOne, false, true);
056:
057: PageData data = pageOne.getData();
058: eventListener.notifyPreTest(testResponder, data);
059:
060: assertEquals("", pageOne.getData().getContent());
061: assertEquals("", data.getContent());
062: assertEquals(
063: "Updating imported content...java.lang.Exception: blah",
064: sentMessages);
065: }
066:
067: public void testRunWithSuiteFromRoot() throws Exception {
068: addImportPropertyToPage(pageOne, true, true);
069:
070: PageData data = pageOne.getData();
071: eventListener.notifyPreTest(suiteResponder, data);
072:
073: assertEquals("", pageOne.getData().getContent());
074: assertEquals(MockWikiImporter.mockContent, childOne.getData()
075: .getContent());
076: assertEquals(MockWikiImporter.mockContent, childTwo.getData()
077: .getContent());
078: assertEquals("Updating imported content...done", sentMessages);
079: }
080:
081: public void testRunWithSuiteFromNonRoot() throws Exception {
082: addImportPropertyToPage(pageOne, false, true);
083:
084: PageData data = pageOne.getData();
085: eventListener.notifyPreTest(suiteResponder, data);
086:
087: assertEquals(MockWikiImporter.mockContent, pageOne.getData()
088: .getContent());
089: assertEquals(MockWikiImporter.mockContent, childOne.getData()
090: .getContent());
091: assertEquals(MockWikiImporter.mockContent, childTwo.getData()
092: .getContent());
093: assertEquals("Updating imported content...done", sentMessages);
094: }
095:
096: private void addImportPropertyToPage(WikiPage page, boolean isRoot,
097: boolean autoUpdate) throws Exception {
098: PageData data = page.getData();
099: String sourceUrl = FitNesseUtil.URL + "PageOne";
100: WikiImportProperty importProps = new WikiImportProperty(
101: sourceUrl);
102: importProps.setRoot(isRoot);
103: importProps.setAutoUpdate(autoUpdate);
104: importProps.addTo(data.getProperties());
105: pageOne.commit(data);
106: }
107:
108: private String sentMessages = "";
109:
110: private void AddMessage(String output) {
111: sentMessages += output.replaceAll("<.*?>", "");
112: }
113:
114: private class MockTestResponder extends TestResponder {
115: public void addToResponse(String output) throws Exception {
116: AddMessage(output);
117: }
118: }
119:
120: private class MockSuiteResponder extends SuiteResponder {
121: public void addToResponse(String output) throws Exception {
122: AddMessage(output);
123: }
124: }
125: }
|