Skip to content

Commit

Permalink
Merge 8b4ad2a into bcb642c
Browse files Browse the repository at this point in the history
  • Loading branch information
aphethean1 committed Dec 31, 2013
2 parents bcb642c + 8b4ad2a commit 05be4d5
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 7 deletions.
Expand Up @@ -10,16 +10,29 @@
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.resource.Resource;

import com.github.searls.jasmine.config.JasmineConfiguration;
import com.github.searls.jasmine.format.BuildsJavaScriptToWriteFailureHtml;
import com.github.searls.jasmine.runner.SpecRunnerTemplate;

public class HandlesRequestsForCoffee {

private CoffeeScript coffeeScript = new CoffeeScript();
private BuildsJavaScriptToWriteFailureHtml buildsJavaScriptToWriteFailureHtml = new BuildsJavaScriptToWriteFailureHtml();
private JasmineConfiguration configuration;

public HandlesRequestsForCoffee(JasmineConfiguration configuration) {
this.configuration = configuration;
}

public void handle(Request baseRequest, HttpServletResponse response, Resource resource) throws IOException {
baseRequest.setHandled(true);
String javascript = compileCoffee(resource);
String javascript = null;
if (SpecRunnerTemplate.REQUIRE_JS.equals(configuration.getSpecRunnerTemplate())) {
// CoffeeScript RequireJS plugin should be used for translation
javascript = IOUtils.toString(resource.getInputStream(), "UTF-8");
} else {
javascript = compileCoffee(resource);
}
setHeaders(response, resource, javascript);
writeResponse(response, javascript);
}
Expand Down
Expand Up @@ -12,16 +12,18 @@

import com.github.searls.jasmine.coffee.DetectsCoffee;
import com.github.searls.jasmine.coffee.HandlesRequestsForCoffee;
import com.github.searls.jasmine.config.JasmineConfiguration;
import com.github.searls.jasmine.runner.CreatesRunner;

public class JasmineResourceHandler extends ResourceHandler {

private final DetectsCoffee detectsCoffee = new DetectsCoffee();
private final HandlesRequestsForCoffee handlesRequestsForCoffee = new HandlesRequestsForCoffee();
private final HandlesRequestsForCoffee handlesRequestsForCoffee;
private final CreatesRunner createsRunner;

public JasmineResourceHandler(CreatesRunner createsRunner) {
public JasmineResourceHandler(CreatesRunner createsRunner, JasmineConfiguration configuration) {
this.createsRunner = createsRunner;
this.handlesRequestsForCoffee = new HandlesRequestsForCoffee(configuration);
setAliases(true);
}

Expand Down
Expand Up @@ -43,7 +43,7 @@ public Handler createHandler() throws IOException {
}

private ResourceHandler createResourceHandler(boolean directory, String absolutePath, String[] welcomeFiles) {
ResourceHandler resourceHandler = new JasmineResourceHandler(this.createsRunner);
ResourceHandler resourceHandler = new JasmineResourceHandler(this.createsRunner, this.configuration);
resourceHandler.setDirectoriesListed(directory);
if (welcomeFiles != null) {
resourceHandler.setWelcomeFiles(welcomeFiles);
Expand Down
Expand Up @@ -19,17 +19,20 @@
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import com.github.searls.jasmine.config.JasmineConfiguration;
import com.github.searls.jasmine.format.BuildsJavaScriptToWriteFailureHtml;
import com.github.searls.jasmine.runner.SpecRunnerTemplate;

@RunWith(MockitoJUnitRunner.class)
public class HandlesRequestsForCoffeeTest {
private static final String COFFEE = "coffee";

@InjectMocks HandlesRequestsForCoffee subject = new HandlesRequestsForCoffee();
@InjectMocks HandlesRequestsForCoffee subject = new HandlesRequestsForCoffee(null);

@Mock private CoffeeScript coffeeScript = new CoffeeScript();
@Mock private BuildsJavaScriptToWriteFailureHtml buildsJavaScriptToWriteFailureHtml;

@Mock private JasmineConfiguration configuration;

@Mock private Request baseRequest;
@Mock(answer=Answers.RETURNS_DEEP_STUBS) private HttpServletResponse response;
@Mock private Resource resource;
Expand All @@ -44,6 +47,11 @@ public void defaultCoffeeStubbing() throws IOException {
when(coffeeScript.compile(COFFEE)).thenReturn("blarg!");
}

@Before
public void defaultSpecConfigurationStubbing() throws IOException {
when(configuration.getSpecRunnerTemplate()).thenReturn(SpecRunnerTemplate.DEFAULT);
}

@Test
public void setsBaseRequestHandledToTrue() throws IOException {
subject.handle(baseRequest, response, resource);
Expand Down Expand Up @@ -111,5 +119,14 @@ public void whenCoffeeCompilationFailsThenWriteTheErrorOutInItsStead() throws IO
verify(response.getWriter()).write("win");
}

@Test
public void whenCoffeeRequestWithREQUIRE_JSThenWriteCoffee() throws IOException {
when(configuration.getSpecRunnerTemplate()).thenReturn(SpecRunnerTemplate.REQUIRE_JS);

subject.handle(baseRequest, response, resource);

verify(response.getWriter()).write(COFFEE);
verify(response).setHeader(HttpHeaders.CONTENT_LENGTH,Integer.toString(COFFEE.length()));
}

}
Expand Up @@ -23,6 +23,7 @@

import com.github.searls.jasmine.coffee.DetectsCoffee;
import com.github.searls.jasmine.coffee.HandlesRequestsForCoffee;
import com.github.searls.jasmine.config.JasmineConfiguration;
import com.github.searls.jasmine.runner.CreatesRunner;

@RunWith(PowerMockRunner.class)
Expand All @@ -33,6 +34,7 @@ public class JasmineResourceHandlerTest {
@Mock private DetectsCoffee detectsCoffee;
@Mock private HandlesRequestsForCoffee handlesRequestsForCoffee;
@Mock private CreatesRunner createsRunner;
@Mock private JasmineConfiguration configuration;

@Mock Request baseRequest;
@Mock HttpServletRequest request;
Expand All @@ -41,7 +43,7 @@ public class JasmineResourceHandlerTest {

@Mock Log log;

@InjectMocks private final JasmineResourceHandler subject = new JasmineResourceHandler(createsRunner) {
@InjectMocks private final JasmineResourceHandler subject = new JasmineResourceHandler(createsRunner, configuration) {
@Override
protected Resource getResource(HttpServletRequest request) throws MalformedURLException {
return JasmineResourceHandlerTest.this.resource;
Expand Down

0 comments on commit 05be4d5

Please sign in to comment.