package fitnesse.revisioncontrol.wiki;
import fitnesse.revisioncontrol.NullState;
import fitnesse.revisioncontrol.Results;
import static fitnesse.revisioncontrol.NullState.VERSIONED;
import static fitnesse.revisioncontrol.NullState.UNKNOWN;
import fitnesse.revisioncontrol.responders.RevisionControlTestCase;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.WikiPageAction;
import static org.easymock.EasyMock.*;
import java.util.List;
public class RevisionControlledFileSystemPageTest extends RevisionControlTestCase {
protected void setUp() throws Exception {
super.setUp();
RevisionControlledFileSystemPage.addOnSave = false;
createExternalRoot();
}
public void testCommitWillLockPageIfUnderRevisionControl() throws Exception {
expectStateOfPageIs(FS_PARENT_PAGE, VERSIONED);
expect(revisionController.hasLocalLock(contentFilePathFor(FS_PARENT_PAGE))).andReturn(false);
expect(revisionController.lock(filePathFor(FS_PARENT_PAGE))).andReturn(new Results());
replay(revisionController);
createPage(FS_PARENT_PAGE);
parentPage.commit(parentPage.getData());
}
public void testCommitWillNotLockPageIfUnderRevisionControlButAlreadyLocked() throws Exception {
expectStateOfPageIs(FS_PARENT_PAGE, VERSIONED);
expect(revisionController.hasLocalLock(contentFilePathFor(FS_PARENT_PAGE))).andReturn(true);
replay(revisionController);
createPage(FS_PARENT_PAGE);
parentPage.commit(parentPage.getData());
}
public void testCommitWillNotAddAndNotLockPageIfNewPageAndAddOnSaveSetToFalse() throws Exception {
RevisionControlledFileSystemPage.addOnSave = false;
expectStateOfPageIs(FS_PARENT_PAGE, UNKNOWN);
replay(revisionController);
createPage(FS_PARENT_PAGE);
parentPage.commit(parentPage.getData());
}
public void testCommitWillAddAndNotLockPageIfNewPageAndAddOnSaveSetToTrue() throws Exception {
RevisionControlledFileSystemPage.addOnSave = true;
expectStateOfPageIs(FS_PARENT_PAGE, UNKNOWN);
expect(revisionController.add(filePathFor(FS_PARENT_PAGE))).andReturn(new Results());
replay(revisionController);
createPage(FS_PARENT_PAGE);
parentPage.commit(parentPage.getData());
}
public void testCreateChildPageWillCreateRevisionControlledPage() throws Exception {
replay(revisionController);
createPage(FS_PARENT_PAGE);
assertTrue(parentPage instanceof RevisionControlledFileSystemPage);
RevisionControlledFileSystemPage rcPage = (RevisionControlledFileSystemPage) parentPage;
WikiPage childPage = rcPage.createChildPage(FS_CHILD_PAGE);
assertTrue(childPage instanceof RevisionControlledFileSystemPage);
}
public void testDeleteChildPageWillDeleteChildFromRevisionControl() throws Exception {
expectStateOfPageIs(FS_PARENT_PAGE, VERSIONED);
expectStateOfPageIs(FS_CHILD_PAGE, VERSIONED);
expect(revisionController.delete(filePathFor(FS_CHILD_PAGE))).andReturn(new Results());
replay(revisionController);
createPage(FS_CHILD_PAGE);
parentPage.removeChildPage(FS_CHILD_PAGE);
}
public void testDeleteChildPageWillDelegateToSuperIfParentNotUnderRevisionControl() throws Exception {
expectStateOfPageIs(FS_PARENT_PAGE, UNKNOWN);
replay(revisionController);
createPage(FS_CHILD_PAGE);
parentPage.removeChildPage(FS_CHILD_PAGE);
}
public void testDeleteChildPageWillDelegateToSuperIfChildNotUnderRevisionControl() throws Exception {
expectStateOfPageIs(FS_PARENT_PAGE, VERSIONED);
expectStateOfPageIs(FS_CHILD_PAGE, UNKNOWN);
replay(revisionController);
createPage(FS_CHILD_PAGE);
parentPage.removeChildPage(FS_CHILD_PAGE);
}
public void testVersionsActionIsOverwritten() throws Exception {
replay(revisionController);
createPage(FS_PARENT_PAGE);
WikiPageAction replacedAction = new WikiPageAction(parentPage.getName(), "Versions");
WikiPageAction expectedAction = new WikiPageAction(parentPage.getName(), "Revisions");
List<WikiPageAction> actions = parentPage.getActions();
assertFalse(actions.contains(replacedAction));
assertTrue(actions.contains(expectedAction));
WikiPageAction actualAction = actions.get(actions.indexOf(expectedAction));
assertEquals("revisions", actualAction.getQuery());
}
}