Skip to content
This repository was archived by the owner on Apr 23, 2019. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions app/controllers/TimeController.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package controllers;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import dagger.Lazy;
import play.data.Form;
import play.data.FormFactory;
import play.libs.Json;
import play.libs.ws.WSClient;
import play.mvc.Controller;
import play.mvc.Result;
Expand Down Expand Up @@ -58,15 +60,22 @@ public Result indexPost() {
}
}

public Result now() {
String date = DateTimeFormatter.ISO_INSTANT.format(Instant.now());
ObjectNode dateObj = Json.newObject().put("dateString", date);
return ok(Json.toJson(dateObj));
}

// call out to local URL as if it's a remote REST API, since timeapi is down
public CompletionStage<Result> ws() {
String url = "http://www.timeapi.org/utc/now.json";
String url = "http://localhost:9000/now";
final String timezone = session("timezone");
return ws.url(url).get().thenApply(result -> {
final JsonNode jsonNode = result.asJson();
final String dateString = jsonNode.findValue("dateString").asText();
final LocalDateTime ldt = LocalDateTime.parse(dateString, DateTimeFormatter.ISO_DATE_TIME);
final Instant instant = Instant.from(DateTimeFormatter.ISO_INSTANT.parse(dateString));
final ZoneId zoneId = zoneId(timezone);
final ZonedDateTime zdt = ldt.atZone(zoneId);
final ZonedDateTime zdt = instant.atZone(zoneId);
final String formatted = formattedDate(zdt);
return ok("Hello! The time is " + formatted + " in time zone " + zoneId);
});
Expand Down
1 change: 1 addition & 0 deletions conf/routes
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ GET / controllers.TimeController.index
POST / controllers.TimeController.indexPost

GET /ws controllers.TimeController.ws
GET /now controllers.TimeController.now

# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
21 changes: 6 additions & 15 deletions test/IntegrationTest.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import dagger.MyApplicationLoader;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import play.Application;
import play.ApplicationLoader;
import play.Environment;
import play.mvc.Http;
import play.mvc.Result;
import play.test.Helpers;
import play.test.WithApplication;

import java.util.Arrays;
import java.util.List;
Expand All @@ -17,19 +16,16 @@
import static org.junit.Assert.assertTrue;
import static play.test.Helpers.*;

public class IntegrationTest {
public class IntegrationTest extends WithApplication {

private static Application app;

@BeforeClass
public static void setup() {
app = new MyApplicationLoader().load(ApplicationLoader.Context.create(Environment.simple()));
Helpers.start(app);
@Override
protected Application provideApplication() {
return new MyApplicationLoader().load(ApplicationLoader.Context.create(Environment.simple()));
}

@Test
public void testIndex() {
Http.RequestBuilder request = new Http.RequestBuilder();
Http.RequestBuilder request = Helpers.fakeRequest();
request.uri(controllers.routes.TimeController.index().url());
// passing app in explicitly here is key since route() overloads without it use the deprecated
// static Application references
Expand All @@ -43,9 +39,4 @@ public void testIndex() {
}
}

@AfterClass
public static void teardown() {
Helpers.stop(app);
}

}