package net.jsunit.action;
import junit.framework.TestCase;
import net.jsunit.MockBrowserTestRunner;
import net.jsunit.model.Browser;
import net.jsunit.model.BrowserLaunchSpecification;
import net.jsunit.model.ResultType;
import net.jsunit.utility.XmlUtility;
import java.util.Arrays;
public class TestRunnerActionTest extends TestCase {
private TestRunnerAction action;
private MockBrowserTestRunner mockRunner;
public void setUp() throws Exception {
super.setUp();
createAction();
}
private void createAction() {
action = new TestRunnerAction();
mockRunner = new MockBrowserTestRunner();
action.setBrowserTestRunner(mockRunner);
}
public void testSuccess() throws Exception {
mockRunner.shouldSucceed = true;
assertEquals(TestRunnerAction.SUCCESS, action.execute());
String xmlString = XmlUtility.asString(action.getXmlRenderable().asXml());
assertTrue(xmlString.startsWith("<testRunResult type=\"" + ResultType.SUCCESS.name()));
}
public void testFailure() throws Exception {
mockRunner.shouldSucceed = false;
assertEquals(TestRunnerAction.SUCCESS, action.execute());
String xmlString = XmlUtility.asString(action.getXmlRenderable().asXml());
assertTrue(xmlString.startsWith("<testRunResult type=\"" + ResultType.FAILURE.name()));
}
public void testOverrideUrl() throws Exception {
String overrideUrl = " http://www.example.com:8954/jsunit/testRunner.html?testPage=http://www.example.com:8954/tests/myTests.html?autoRun=true&submitResults=http://www.example.com:8954/tests ";
action.setUrl(overrideUrl);
assertEquals(TestRunnerAction.SUCCESS, action.execute());
assertEquals(2, mockRunner.launchSpecs.size());
BrowserLaunchSpecification spec1 = mockRunner.launchSpecs.get(0);
BrowserLaunchSpecification spec2 = mockRunner.launchSpecs.get(1);
assertTrue(spec1.hasOverrideUrl());
assertEquals(overrideUrl.trim(), spec1.getOverrideUrl());
assertTrue(spec2.hasOverrideUrl());
assertEquals(overrideUrl.trim(), spec2.getOverrideUrl());
}
public void testLimitBrowsers() throws Exception {
action.setSelectedBrowsers(Arrays.asList(new Browser[]{new Browser("mybrowser2.exe", 1)}));
assertEquals(TestRunnerAction.SUCCESS, action.execute());
assertEquals(1, mockRunner.launchSpecs.size());
assertEquals("mybrowser2.exe", mockRunner.launchSpecs.get(0).getBrowser().getStartCommand());
createAction();
action.setSelectedBrowsers(Arrays.asList(new Browser[]{new Browser("mybrowser1.exe", 0), new Browser("mybrowser2.exe", 1)}));
assertEquals(TestRunnerAction.SUCCESS, action.execute());
assertEquals(2, mockRunner.launchSpecs.size());
assertEquals("mybrowser1.exe", mockRunner.launchSpecs.get(0).getBrowser().getStartCommand());
assertEquals("mybrowser2.exe", mockRunner.launchSpecs.get(1).getBrowser().getStartCommand());
}
public void testErrorMessage() throws Exception {
action.setErrorMessage("foobar barfoo");
assertEquals("<error>foobar barfoo</error>", XmlUtility.asString(action.getXmlRenderable().asXml()));
}
}