package fitnesse.responders.testHistory;
import fitnesse.FitNesseContext;
import fitnesse.http.MockRequest;
import fitnesse.http.Response;
import fitnesse.http.SimpleResponse;
import fitnesse.testutil.FitNesseUtil;
import org.junit.After;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import util.FileUtil;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
public class PurgeHistoryResponderTest {
private File resultsDirectory;
private FitNesseContext context;
private PurgeHistoryResponder responder;
private MockRequest request;
@Before
public void setup() throws Exception {
resultsDirectory = new File("testHistoryDirectory");
removeResultsDirectory();
resultsDirectory.mkdir();
responder = new PurgeHistoryResponder();
Properties properties = new Properties();
properties.setProperty("test.history.path", resultsDirectory.getPath());
context = FitNesseUtil.makeTestContext(properties);
request = new MockRequest();
request.setResource("TestPage");
}
@After
public void teardown() throws IOException {
removeResultsDirectory();
}
private void removeResultsDirectory() throws IOException {
if (resultsDirectory.exists())
FileUtil.deleteFileSystemDirectory(resultsDirectory);
}
@Test
public void shouldDeleteHistoryFromRequestAndRedirect() throws Exception {
StubbedPurgeHistoryResponder responder = new StubbedPurgeHistoryResponder();
request.addInput("days", "30");
SimpleResponse response = (SimpleResponse) responder.makeResponse(context, request);
assertEquals(30, responder.daysDeleted);
assertEquals(303, response.getStatus());
assertEquals("?testHistory", response.getHeader("Location"));
}
@Test
public void shouldMakeErrorResponseWhenGetsInvalidNumberOfDays() throws Exception {
request.addInput("days", "-42");
Response response = responder.makeResponse(context, request);
assertEquals(400, response.getStatus());
}
@Test
public void shouldMakeErrorResponseWhenItGetsInvalidTypeForNumberOfDays() throws Exception {
request.addInput("days", "bob");
Response response = responder.makeResponse(context, request);
assertEquals(400, response.getStatus());
}
private static class StubbedPurgeHistoryResponder extends PurgeHistoryResponder {
public int daysDeleted = -1;
@Override
public void deleteTestHistoryOlderThanDays(File resultsDirectory, int days) {
daysDeleted = days;
}
}
}