package com.google.sitebricks.acceptance;
import com.google.common.collect.ImmutableSet;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.sitebricks.acceptance.util.AcceptanceTest;
import com.google.sitebricks.client.Web;
import com.google.sitebricks.client.WebResponse;
import com.google.sitebricks.client.transport.Json;
import com.google.sitebricks.conversion.Converter;
import com.google.sitebricks.conversion.ConverterRegistry;
import com.google.sitebricks.conversion.StandardTypeConverter;
import com.google.sitebricks.example.RestfulWebService;
import org.testng.annotations.Test;
/**
* @author Dhanji R. Prasanna (dhanji@gmail.com)
*/
@Test(suiteName = AcceptanceTest.SUITE)
public class PostableRestfuWebServiceAcceptanceTest {
public void shouldTransportJsonWithoutTemplate() {
RestfulWebService.Book perdido = new RestfulWebService.Book();
perdido.setAuthor(RestfulWebService.CHINA_MIEVILLE);
perdido.setName(RestfulWebService.PERDIDO_STREET_STATION);
perdido.setPageCount(RestfulWebService.PAGE_COUNT);
WebResponse response = createInjector()
.getInstance(Web.class)
.clientOf(AcceptanceTest.baseUrl() + "/postable?p1=v1,v2")
.transports(RestfulWebService.Book.class)
.over(Json.class)
.post(perdido);
// Should ping us the author back.
assert response.toString().contains(perdido.getAuthor()) : response.toString();
}
private Injector createInjector() {
return Guice.createInjector(new AbstractModule() {
protected void configure() {
bind(ConverterRegistry.class).toInstance(new StandardTypeConverter(
ImmutableSet.<Converter>of()));
}
});
}
}