package org.trimou.dropwizard.views;
import static org.junit.Assert.assertEquals;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.junit.Test;
import org.trimou.util.ImmutableList;
import com.codahale.metrics.MetricRegistry;
import com.sun.jersey.api.core.DefaultResourceConfig;
import com.sun.jersey.test.framework.AppDescriptor;
import com.sun.jersey.test.framework.JerseyTest;
import com.sun.jersey.test.framework.LowLevelAppDescriptor;
import io.dropwizard.views.ViewMessageBodyWriter;
import io.dropwizard.views.ViewRenderer;
/**
*
* @author Martin Kouba
*/
public class TrimouViewRendererTest extends JerseyTest {
@Path("/test/")
@Produces(MediaType.TEXT_HTML)
public static class TestResource {
@GET
@Path("/hello")
public HelloView hello() {
return new HelloView("Martin");
}
@GET
@Path("/relative")
public RelativeView relative() {
return new RelativeView("Martin");
}
@GET
@Path("/localized")
public LocalizedView localized() {
return new LocalizedView();
}
@GET
@Path("/complex")
public ComplexView complex() {
return new ComplexView("Martin");
}
}
@Override
protected AppDescriptor configure() {
final DefaultResourceConfig config = new DefaultResourceConfig();
final ViewRenderer renderer = new TrimouViewRenderer.Builder().build();
config.getSingletons().add(new ViewMessageBodyWriter(new MetricRegistry(), ImmutableList.of(renderer)));
config.getSingletons().add(new TestResource());
return new LowLevelAppDescriptor.Builder(config).build();
}
@Test
public void testSimpleView() throws Exception {
final String response = client().resource(getBaseURI() + "test/hello").get(String.class).trim();
assertEquals("Hello Martin!", response);
}
@Test
public void testRelativeView() throws Exception {
final String response = client().resource(getBaseURI() + "test/relative").get(String.class).trim();
assertEquals("Hello Martin!", response);
}
@Test
public void testLocallizedView() throws Exception {
assertEquals("Ahoj!", client().resource(getBaseURI() + "test/localized").acceptLanguage(new Locale("cs")).get(String.class).trim());
assertEquals("Hallo!", client().resource(getBaseURI() + "test/localized").acceptLanguage(Locale.GERMANY).get(String.class).trim());
assertEquals("Salut!", client().resource(getBaseURI() + "test/localized").acceptLanguage(Locale.FRANCE).get(String.class).trim());
}
@Test
public void testComplexView() throws Exception {
final String response = client().resource(getBaseURI() + "test/complex").get(String.class).trim();
assertEquals("Hello Martin again!", response);
}
}