package fitnesse.revisioncontrol.responders; import fitnesse.revisioncontrol.NewRevisionResults; import fitnesse.revisioncontrol.OperationStatus; import fitnesse.revisioncontrol.RevisionControlDetail; import fitnesse.revisioncontrol.RevisionControlException; import static util.RegexTestCase.assertSubString; import static org.easymock.EasyMock.*; import java.util.Arrays; import java.util.List; public class CheckinResponderTest extends RevisionControlTestCase { @Override protected void setUp() throws Exception { super.setUp(); responder = new CheckinResponder(); } @Override protected void tearDown() throws Exception { super.tearDown(); verify(revisionController); } public void testShouldAskRevisionControllerToCheckinPage() throws Exception { expect(revisionController.checkin(filePathFor(FS_PARENT_PAGE), "")). andReturn(new TestNewRevisionResults(1234, OperationStatus.SUCCESS)); replay(revisionController); createPage(FS_PARENT_PAGE); request.setResource(FS_PARENT_PAGE); invokeResponderAndCheckSuccessStatus(); assertSubString(FS_PARENT_PAGE, response.getContent()); assertSubString("Checked In", response.getContent()); assertSubString("At revision 1234", response.getContent()); } public void testShouldAskRevisionControllerToCheckinPageWithNothingToDo() throws Exception { expect(revisionController.checkin(filePathFor(FS_PARENT_PAGE), "")). andReturn(new TestNewRevisionResults(-1, OperationStatus.NOTHING_TO_DO)); replay(revisionController); createPage(FS_PARENT_PAGE); request.setResource(FS_PARENT_PAGE); invokeResponderAndCheckSuccessStatus(); assertSubString("No changes to check in", response.getContent()); } public void testShouldReportErrorMsgIfCheckinOperationFails() throws Exception { final String errorMsg = "Cannot checkin files to Revision Control"; revisionController.checkin(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 static class TestNewRevisionResults extends NewRevisionResults { public TestNewRevisionResults(int newRevision, OperationStatus status) { setNewRevision(newRevision); setStatus(status); } public List<RevisionControlDetail> getDetails() { return Arrays.asList(new RevisionControlDetail(FS_PARENT_PAGE, "Checked In")); } } }