package fitnesse.revisioncontrol.responders;
import fitnesse.revisioncontrol.Results;
import fitnesse.revisioncontrol.RevisionControlException;
import static util.RegexTestCase.assertSubString;
import static org.easymock.EasyMock.*;
public class RevertResponderTest extends RevisionControlTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
responder = new RevertResponder();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
verify(revisionController);
}
public void testShouldAskConfirmation() throws Exception {
createPage(FS_PARENT_PAGE);
request.setResource(FS_PARENT_PAGE);
replay(revisionController);
invokeResponderAndCheckSuccessStatus();
assertSubString("<H3>Are you sure you want to discard local changes to " + FS_PARENT_PAGE + "?</H3>", response.getContent());
assertSubString("<a href=\"" + FS_PARENT_PAGE + "?responder=revert&confirmed=yes\">Yes</a>", response.getContent());
assertSubString("<a href=\"" + FS_PARENT_PAGE +"\">No</a>", response.getContent());
}
public void testShouldAskRevisionControllerToRevertPage() throws Exception {
request.addInput(RevertResponder.PARAM_CONFIRMED, "yes");
expectRevertForPage(FS_PARENT_PAGE);
replay(revisionController);
createPage(FS_PARENT_PAGE);
request.setResource(FS_PARENT_PAGE);
invokeResponderAndCheckSuccessStatus();
}
public void testShouldReportErrorMsgIfRevertOperationFails() throws Exception {
request.addInput(RevertResponder.PARAM_CONFIRMED, "yes");
final String errorMsg = "Cannot revert files from Revision Control";
revisionController.revert(filePathFor(FS_PARENT_PAGE));
expectLastCall().andThrow(new RevisionControlException(errorMsg));
replay(revisionController);
createPage(FS_PARENT_PAGE);
request.setResource(FS_PARENT_PAGE);
invokeResponderAndCheckSuccessStatus();
assertSubString(errorMsg, response.getContent());
}
public void testShouldOnlyRevertCurrentPage() throws Exception {
request.addInput(RevertResponder.PARAM_CONFIRMED, "yes");
expectRevertForPage(FS_CHILD_PAGE);
replay(revisionController);
createPage(FS_GRAND_CHILD_PAGE);
request.setResource(FS_PARENT_PAGE + "." + FS_CHILD_PAGE);
invokeResponderAndCheckSuccessStatus();
}
private void expectRevertForPage(String page) throws Exception {
expect(revisionController.revert(filePathFor(page))).andReturn(new Results());
}
}