Skip to content
package controllers;
import static org.fest.assertions.Assertions.assertThat;
import static play.test.Helpers.callAction;
import static play.test.Helpers.fakeRequest;
import static play.test.Helpers.status;
import java.util.HashMap;
import java.util.Map;
import models.User;
import play.mvc.HandlerRef;
import play.mvc.Http.Cookie;
import play.mvc.Http.Session;
import play.mvc.Result;
import play.test.FakeRequest;
import play.test.Helpers;
import test.FakeApplicationAwareTest;
public abstract class AbstractControllerTest extends FakeApplicationAwareTest {
public static class Given {
private Result result;
private HandlerRef action;
private User loggedUser;
private Map<String, String> formData = new HashMap<String, String>();
public Given(HandlerRef action) {
this.action = action;
}
public static Given action(HandlerRef action) {
return new Given(action);
}
public Given withUser(User user) {
this.loggedUser = user;
return this;
}
public Given withInput(String name, String value) {
this.formData.put(name, value);
return this;
}
public Given withInput(String name, Long value) {
this.formData.put(name, String.valueOf(value));
return this;
}
public Given withInput(String name, Integer value) {
this.formData.put(name, String.valueOf(value));
return this;
}
public Given expectStatus(int expectedStatus) {
assertThat(status(result)).isEqualTo(expectedStatus);
return this;
}
public Given expectContentType(String contentType) {
assertThat(Helpers.contentType(result)).isEqualTo(contentType);
return this;
}
public Given expectTextPresent(String text) {
assertThat(Helpers.contentAsString(this.result)).contains(text);
return this;
}
public Given expectTextNotPresent(String text) {
assertThat(Helpers.contentAsString(this.result)).doesNotContain(text);
return this;
}
public Given expectRedirectTo(String location) {
assertThat(Helpers.header("Location", this.result)).isEqualTo(location);
return this;
}
public Given expectedCookie(String expectedValue) {
Cookie cookie = Helpers.cookie("PLAY_SESSION", this.result);
assertThat(cookie.value()).isEqualTo(expectedValue);
return this;
}
public Given expectedSessionValue(String key, String value) {
Session session = Helpers.session(this.result);
assertThat(session.get(key)).isEqualTo(value);
return this;
}
public Given execute() {
FakeRequest request = fakeRequest();
request.withFormUrlEncodedBody(this.formData);
if(loggedUser != null) {
request.withSession(Secured.SESSION_KEY, String.valueOf(loggedUser.id));
}
this.result = callAction(this.action, request);
return this;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.