package samplest.core; import com.github.kevinsawicki.http.HttpRequest; import org.junit.ClassRule; import org.junit.Test; import restx.tests.RestxServerRule; import static org.assertj.core.api.Assertions.assertThat; /** * Date: 13/12/13 * Time: 23:09 */ public class PolymorphicResourceTest { @ClassRule public static RestxServerRule server = new RestxServerRule(); @Test public void should_return_A() throws Exception { HttpRequest httpRequest = server.client().authenticatedAs("admin").GET( "/api/polymorphic/single/A"); assertThat(httpRequest.code()).isEqualTo(200); assertThat(httpRequest.body().trim()).isEqualTo("{\n" + " \"@class\" : \".PolymorphicResource$A\",\n" + " \"a\" : \"a\"\n" + "}"); } @Test public void should_return_B() throws Exception { HttpRequest httpRequest = server.client().authenticatedAs("admin").GET( "/api/polymorphic/single/B"); assertThat(httpRequest.code()).isEqualTo(200); assertThat(httpRequest.body().trim()).isEqualTo("{\n" + " \"@class\" : \".PolymorphicResource$B\",\n" + " \"a\" : \"a\",\n" + " \"b\" : \"b\"\n" + "}"); } @Test public void should_return_B_list() throws Exception { HttpRequest httpRequest = server.client().authenticatedAs("admin").GET( "/api/polymorphic/list/B"); assertThat(httpRequest.code()).isEqualTo(200); assertThat(httpRequest.body().trim()).isEqualTo("[ {\n" + " \"@class\" : \".PolymorphicResource$A\",\n" + " \"a\" : \"a1\"\n" + "}, {\n" + " \"@class\" : \".PolymorphicResource$B\",\n" + " \"a\" : \"a2\",\n" + " \"b\" : \"b\"\n" + "} ]"); } @Test public void should_post_A() throws Exception { HttpRequest httpRequest = server.client().authenticatedAs("admin").POST( "/api/polymorphic").send("{\"@class\":\".PolymorphicResource$A\",\"a\":\"a3\"}"); assertThat(httpRequest.code()).isEqualTo(200); assertThat(httpRequest.body().trim()).isEqualTo("{\n" + " \"@class\" : \".PolymorphicResource$A\",\n" + " \"a\" : \"a3\"\n" + "}"); } @Test public void should_post_B() throws Exception { HttpRequest httpRequest = server.client().authenticatedAs("admin").POST( "/api/polymorphic").send("{\"@class\":\".PolymorphicResource$B\",\"a\":\"a3\",\"b\":\"b\"}"); assertThat(httpRequest.code()).isEqualTo(200); assertThat(httpRequest.body().trim()).isEqualTo("{\n" + " \"@class\" : \".PolymorphicResource$B\",\n" + " \"a\" : \"a3\",\n" + " \"b\" : \"b\"\n" + "}"); } }