package oose.dea.services.rest; import oose.dea.IntegrationTest; import oose.dea.dataaccess.Item; import oose.dea.dataaccess.ItemDAO; import org.glassfish.hk2.api.Factory; import org.glassfish.hk2.utilities.binding.AbstractBinder; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.test.JerseyTest; import org.junit.Test; import org.junit.experimental.categories.Category; import javax.ws.rs.core.Application; import java.util.ArrayList; import static oose.dea.config.GuiceResourceConfig.JACKSON_JSON_SERIALIZER; import static oose.dea.config.GuiceResourceConfig.JSON_SERIALIZER; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @Category(IntegrationTest.class) public class ItemRestServiceIT extends JerseyTest { @Test public void findAll() throws Exception { final String items = target("/items").request().get(String.class); assertEquals("[{\"sku\":\"frik\",\"category\":\"Vette hap\",\"title\":\"Frikandel\"}]", items); } @Override protected Application configure() { return new ResourceConfig() { { property(JSON_SERIALIZER, JACKSON_JSON_SERIALIZER); register(new TestBinder()); register(ItemRestService.class); } }; } private static class TestBinder extends AbstractBinder { @Override protected void configure() { bindFactory(ServiceProvider.class).to(ItemDAO.class); } } private static class ServiceProvider implements Factory<ItemDAO>{ @Override public ItemDAO provide() { ItemDAO itemDAO = mock(ItemDAO.class); ArrayList<Item> items = new ArrayList<Item>() {{ add(new Item("frik", "Vette hap", "Frikandel")); }}; when(itemDAO.list()).thenReturn(items); return itemDAO; } @Override public void dispose(ItemDAO itemDAO) { } } }