package org.multibit.mbm.client.handlers.item;
import org.junit.Test;
import org.multibit.mbm.client.PublicMerchantClient;
import org.multibit.mbm.client.handlers.BaseHandlerTest;
import org.multibit.mbm.model.ClientItem;
import org.multibit.mbm.test.FixtureAsserts;
import java.net.URI;
import java.util.List;
import static junit.framework.Assert.assertEquals;
import static org.mockito.Mockito.when;
public class ClientItemCollectionHandlerTest extends BaseHandlerTest {
@Test
public void retrievePromotionalItemsByPage() throws Exception {
// Arrange
URI expectedUri = URI.create("http://localhost:8080/mbm/items/promotion?pn=0&ps=1");
// Test-specific JerseyClient behaviour
when(client.resource(expectedUri)).thenReturn(webResource);
when(webResource.get(String.class)).thenReturn(
FixtureAsserts.jsonFixture("/fixtures/hal/item/expected-public-retrieve-items-page-1.json")
);
// Act
List<ClientItem> items = PublicMerchantClient
.newInstance(locale)
.items()
.retrievePromotionalItemsByPage(0,1);
// Assert
assertEquals("Unexpected number of items", 1, items.size());
assertEquals("Expected title", "Cryptonomicon", items.get(0).getOptionalProperties().get("title"));
assertEquals("Expected uri", "http://multibit-store.herokuapp.com/images/book.jpg", items.get(0).getOptionalProperties().get("image_thumbnail_uri"));
assertEquals("Expected uri", "http://localhost:8080/item/0099410672", items.get(0).getOptionalProperties().get("item self"));
}
}