/* * Copyright 2009 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.jstestdriver; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Set; import junit.framework.TestCase; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.jstestdriver.hooks.TestsPreProcessor; import com.google.jstestdriver.model.JstdTestCase; import com.google.jstestdriver.model.RunData; import com.google.jstestdriver.util.NullStopWatch; /** * @author corysmith@google.com (Cory Smith) */ public class RunTestsActionTest extends TestCase { public void testRunTests() throws Exception { final ResponseStreamStub stream = new ResponseStreamStub(); final List<String> tests = Lists.<String> newArrayList("TestCase.testNomable"); final boolean captureConsole = false; final String browserId = "webNom"; final FakeJsTestDriverClient.TestRun expected = new FakeJsTestDriverClient.TestRun(browserId, stream, tests, captureConsole); final RunTestsAction action = new RunTestsAction(new FakeResponseStreamFactory(stream), tests, captureConsole, Collections.<TestsPreProcessor> emptySet(), new NullStopWatch()); final FakeJsTestDriverClient client = new FakeJsTestDriverClient(Collections.<BrowserInfo>emptyList()); action.run(browserId, client, new RunData( Collections.<ResponseStream>emptyList(), Collections.<JstdTestCase>emptyList(), null), null); client.assertTestRun(expected); } public void testRunTestsPreProcessed() throws Exception { final ResponseStreamStub stream = new ResponseStreamStub(); final List<String> tests = Lists.<String> newArrayList("TestCase.testNotNomable"); final List<String> expectedTests = Lists.<String> newArrayList("TestCase.testNomable"); final boolean captureConsole = false; final String browserId = "webNom"; final FakeJsTestDriverClient.TestRun expected = new FakeJsTestDriverClient.TestRun(browserId, stream, expectedTests, captureConsole); final Set<TestsPreProcessor> preProcessors = Sets.<TestsPreProcessor> newHashSet(new TestsPreProcessor() { public List<String> process(String actualBrowserId, Iterator<String> actualTests) { assertEquals(tests, Lists.newArrayList(tests)); assertEquals(browserId, actualBrowserId); return expectedTests; } }); final RunTestsAction action = new RunTestsAction(new FakeResponseStreamFactory(stream), tests, captureConsole, preProcessors, new NullStopWatch()); final FakeJsTestDriverClient client = new FakeJsTestDriverClient(Collections.<BrowserInfo>emptyList()); action.run(browserId, client, new RunData(Collections.<ResponseStream>emptyList(), Collections.<JstdTestCase>emptyList(), null), null); client.assertTestRun(expected); } private static final class FakeResponseStreamFactory implements ResponseStreamFactory { private final ResponseStreamStub stream; public FakeResponseStreamFactory(ResponseStreamStub stream) { this.stream = stream; } public ResponseStream getRunTestsActionResponseStream(String browserId) { return stream; } public ResponseStream getResetActionResponseStream() { return null; } public ResponseStream getEvalActionResponseStream() { return null; } public ResponseStream getDryRunActionResponseStream() { return null; } } private static final class ResponseStreamStub implements ResponseStream { public void stream(Response response) { } public void finish() { } } }