package fitnesse.revisioncontrol.responders;
import fitnesse.revisioncontrol.Results;
import fitnesse.revisioncontrol.RevisionControlException;
import static util.RegexTestCase.assertSubString;
import static org.easymock.EasyMock.*;
public class CheckoutResponderTest extends RevisionControlTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
responder = new CheckoutResponder();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
verify(revisionController);
}
public void testShouldAskRevisionControllerToCheckoutPage() throws Exception {
expectCheckoutForPage(FS_PARENT_PAGE);
replay(revisionController);
createPage(FS_PARENT_PAGE);
request.setResource(FS_PARENT_PAGE);
invokeResponderAndCheckSuccessStatus();
}
public void testAfterCheckoutShouldGiveEditLink() throws Exception {
expectCheckoutForPage(FS_PARENT_PAGE);
replay(revisionController);
createPage(FS_PARENT_PAGE);
request.setResource(FS_PARENT_PAGE);
invokeResponderAndCheckSuccessStatus();
assertSubString("Click <a href=\"" + FS_PARENT_PAGE + "?edit\">here</a>", response.getContent());
}
public void testShouldReportErrorMsgIfCheckoutOperationFails() throws Exception {
final String errorMsg = "Cannot checkout files to Revision Control";
revisionController.checkout(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());
}
private void expectCheckoutForPage(String page) throws Exception {
expect(revisionController.checkout(filePathFor(page))).andReturn(new Results());
}
}