package scenic3;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.concurrent.atomic.AtomicBoolean;
import org.junit.Before;
import org.junit.Test;
import org.slim3.controller.Navigation;
import org.slim3.tester.MockHttpServletRequest;
import org.slim3.tester.MockHttpServletResponse;
import org.slim3.tester.MockServletContext;
/**
* Test for @{link ScenicPage}.
* <p></p>
* @author shuji.w6e
* @since 0.4.0
*/
public class ScenicPageTest {
private ScenicPage target;
private MockServletContext servletContext;
private MockHttpServletRequest request;
private MockHttpServletResponse response;
private ScenicController controller;
@Before
public void setUp() throws Exception {
target = new ScenicPage() {
};
servletContext = new MockServletContext();
request = new MockHttpServletRequest(servletContext);
response = new MockHttpServletResponse();
controller = new ScenicController() {
{
super.servletContext = ScenicPageTest.this.servletContext;
super.request = ScenicPageTest.this.request;
super.response = ScenicPageTest.this.response;
}
@Override
protected Navigation run() throws Exception {
return null;
}
@Override
public ScenicPage getPage() {
return target;
}
@Override
public String getActionMethodName() {
return null;
}
};
controller.setupPage(target);
}
@Test
public void response() throws Exception {
request.setCharacterEncoding("UTF-8");
Navigation result = target.response("OK");
assertThat(result, is(nullValue()));
assertThat(response.getContentType(), is("text/plain; charset=UTF-8"));
assertThat(response.getContentLength(), is(2));
assertThat(response.getOutputAsString(), is("OK"));
}
@Test
public void response_shift_jis() throws Exception {
request.setCharacterEncoding("Shift_JIS");
Navigation result = target.response("こんにちは001");
assertThat(result, is(nullValue()));
assertThat(response.getContentType(), is("text/plain; charset=Shift_JIS"));
assertThat(response.getContentLength(), is(13));
assertThat(response.getOutputAsString(), is("こんにちは001"));
}
@Test
public void delegate_controllers_isGet() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected boolean isGet() {
delegate.set(true);
return super.isGet();
}
}.setupPage(target);
target.isGet();
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_isPost() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected boolean isPost() {
delegate.set(true);
return super.isPost();
}
}.setupPage(target);
target.isPost();
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_isPut() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected boolean isPut() {
delegate.set(true);
return super.isPut();
}
}.setupPage(target);
target.isPut();
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_isDelete() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected boolean isDelete() {
delegate.set(true);
return super.isDelete();
}
}.setupPage(target);
target.isDelete();
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_forward() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected Navigation forward(String path) {
delegate.set(true);
return super.forward(path);
}
}.setupPage(target);
target.forward("aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_redirect() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected Navigation redirect(String path) {
delegate.set(true);
return super.redirect(path);
}
}.setupPage(target);
target.redirect("aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_requestScope() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected <T> T requestScope(CharSequence name) {
delegate.set(true);
return super.<T> requestScope(name);
}
}.setupPage(target);
target.requestScope("aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_requestScope2() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected void requestScope(CharSequence name, Object value) throws NullPointerException {
delegate.set(true);
super.requestScope(name, value);
}
}.setupPage(target);
target.requestScope("aaa", "aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_removeRequestScope() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected <T> T removeRequestScope(CharSequence name) throws NullPointerException {
delegate.set(true);
return super.<T> removeRequestScope(name);
}
}.setupPage(target);
target.removeRequestScope("aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_paramValues() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected String[] paramValues(CharSequence name) {
delegate.set(true);
return super.paramValues(name);
}
}.setupPage(target);
target.paramValues("aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_param() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected String param(CharSequence name) throws NullPointerException {
delegate.set(true);
return super.param(name);
}
}.setupPage(target);
target.param("aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_sessionScope() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected <T> T sessionScope(CharSequence name) {
delegate.set(true);
return super.<T> sessionScope(name);
}
}.setupPage(target);
target.sessionScope("aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_sessionScope2() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected void sessionScope(CharSequence name, Object value) throws NullPointerException {
delegate.set(true);
super.sessionScope(name, value);
}
}.setupPage(target);
target.sessionScope("aaa", "aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_removeSessionScope() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected <T> T removeSessionScope(CharSequence name) throws NullPointerException {
delegate.set(true);
return super.<T> removeSessionScope(name);
}
}.setupPage(target);
target.removeSessionScope("aaa");
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_download_bytes() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected void download(String name, byte[] bytes) throws NullPointerException {
delegate.set(true);
super.download(name, bytes);
}
}.setupPage(target);
target.download("aaa", new byte[10]);
assertThat(delegate.get(), is(true));
}
@Test
public void delegate_controllers_download_InputStream() throws Exception {
final AtomicBoolean delegate = new AtomicBoolean(false);
// create mock controller and set to target page object
new MockScenicController() {
@Override
protected void download(String name, InputStream input) throws NullPointerException {
delegate.set(true);
super.download(name, input);
}
}.setupPage(target);
target.download("aaa", new ByteArrayInputStream(new byte[64]));
assertThat(delegate.get(), is(true));
}
static class MockScenicController extends ScenicController {
{
super.servletContext = new MockServletContext();
super.request = new MockHttpServletRequest(super.servletContext);
super.response = new MockHttpServletResponse();
}
@Override
protected Navigation run() throws Exception {
return null;
}
@Override
public ScenicPage getPage() {
return null;
}
@Override
public String getActionMethodName() {
return null;
}
}
}