package net.jsunit;
import junit.framework.TestCase;
import net.jsunit.configuration.Configuration;
import net.jsunit.interceptor.BrowserResultInterceptor;
import net.jsunit.model.Browser;
import net.jsunit.model.BrowserResult;
import net.jsunit.model.BrowserResultWriter;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
public class ResultAcceptorTest extends TestCase {
protected Map<String, String[]> requestMap;
private JsUnitStandardServer server;
private MockBrowserResultRepository mockBrowserResultRepository;
public void setUp() throws Exception {
super.setUp();
Configuration configuration = new Configuration(new StubConfigurationSource() {
public String browserFileNames() {
return "browser1.exe,browser2.exe,browser3.exe";
}
public String logStatus() {
return String.valueOf(Boolean.FALSE);
}
public String url() {
return "http://bar";
}
});
mockBrowserResultRepository = new MockBrowserResultRepository();
server = new JsUnitStandardServer(configuration, mockBrowserResultRepository, false);
server.setProcessStarter(new MockProcessStarter());
requestMap = new HashMap<String, String[]>();
requestMap.put(BrowserResultWriter.ID, new String[]{"ID_foo"});
requestMap.put(BrowserResultWriter.USER_AGENT, new String[]{"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"});
requestMap.put(BrowserResultWriter.TIME, new String[]{"4.3"});
requestMap.put(BrowserResultWriter.JSUNIT_VERSION, new String[]{"2.5"});
requestMap.put(BrowserResultWriter.TEST_CASES, dummyTestCaseStrings());
}
protected String[] dummyTestCaseStrings() {
return new String[]{"file:///dummy/path/dummyPage.html:testFoo|1.3|S||", "file:///dummy/path/dummyPage.html:testFoo|1.3|E|Test Error Message|", "file:///dummy/path/dummyPage.html:testFoo|1.3|F|Test Failure Message|"};
}
protected void submit() {
server.launchBrowserTestRun(new BrowserLaunchSpecification(new Browser("browser2.exe", 1)));
HttpServletRequest request = new DummyHttpRequest(requestMap);
server.accept(new BrowserResultInterceptor().build(request));
}
public void testSubmitResults() {
assertEquals(0, server.getResults().size());
submit();
assertEquals(1, server.getResults().size());
submit();
assertEquals(1, server.getResults().size());
}
public void testSubmittedResultHeaders() {
submit();
BrowserResult result = server.getResults().get(0);
assertEquals("ID_foo", result.getId());
assertEquals("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", result.getUserAgent());
assertEquals("2.5", result.getJsUnitVersion());
assertEquals(1, result.getErrorCount());
assertEquals(1, result.getFailureCount());
assertEquals(3, result.getTestCount());
assertEquals(4.3d, result.getTime(), .001d);
}
public void testSubmittedTestCaseResults() {
submit();
BrowserResult result = server.getResults().get(0);
assertEquals(3, result.getTestCaseResults().size());
}
public void testHasReceivedResultSinceDate() throws InterruptedException {
assertFalse(server.hasReceivedResultSince(System.currentTimeMillis()));
long time = System.currentTimeMillis();
Thread.sleep(100);
submit();
assertTrue(server.hasReceivedResultSince(time));
}
public void testFindResultByIdInMemoryOrOnDisk() throws InvalidBrowserIdException {
assertNull(server.findResultWithId("ID_foo", 1));
assertEquals("ID_foo", mockBrowserResultRepository.requestedId);
assertEquals(1, mockBrowserResultRepository.requestedBrowser.getId());
submit();
mockBrowserResultRepository.requestedId = null;
assertFalse(server.getResults().isEmpty());
assertNotNull(server.findResultWithId("ID_foo", 1));
assertNull(mockBrowserResultRepository.requestedId);
assertNull(server.findResultWithId("Invalid ID", 1));
assertEquals("Invalid ID", mockBrowserResultRepository.requestedId);
mockBrowserResultRepository.requestedId = null;
server.clearResults();
assertTrue(server.getResults().isEmpty());
server.findResultWithId("ID_foo", 1);
assertEquals("ID_foo", mockBrowserResultRepository.requestedId);
assertEquals(1, mockBrowserResultRepository.requestedBrowser.getId());
}
public void testLog() {
submit();
assertEquals("ID_foo", mockBrowserResultRepository.storedResult.getId());
}
}