package org.multibit.mbm.client.handlers.cart;
import com.google.common.collect.Lists;
import org.junit.Test;
import org.multibit.mbm.api.request.cart.PublicCartItem;
import org.multibit.mbm.client.PublicMerchantClient;
import org.multibit.mbm.client.handlers.BaseHandlerTest;
import org.multibit.mbm.model.ClientCart;
import org.multibit.mbm.model.ClientUser;
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 ClientCartHandlerTest extends BaseHandlerTest {
@Test
public void retrieveCartNoItems() throws Exception {
// Arrange
final ClientCart expectedCart = new ClientCart();
expectedCart.setItemTotal("2");
final ClientUser clientUser = new ClientUser();
clientUser.setApiKey("apiKey");
clientUser.setSecretKey("secretKey");
URI expectedUri = URI.create("http://localhost:8080/mbm/cart");
// Test-specific JerseyClient behaviour
when(client.resource(expectedUri))
.thenReturn(webResource);
when(webResource.get(String.class))
.thenReturn(FixtureAsserts.jsonFixture("/fixtures/hal/cart/expected-public-retrieve-cart.json"));
// Act
ClientCart actualCart = PublicMerchantClient
.newInstance(locale)
.cart()
.retrieveCartNoItems(clientUser);
// Assert
assertEquals("Unexpected item count", "2", actualCart.getItemTotal());
}
@Test
public void retrieveCart() throws Exception {
// Arrange
final ClientCart expectedCart = new ClientCart();
expectedCart.setItemTotal("2");
final ClientUser clientUser = new ClientUser();
clientUser.setApiKey("apiKey");
clientUser.setSecretKey("secretKey");
URI expectedUri = URI.create("http://localhost:8080/mbm/cart");
// Test-specific JerseyClient behaviour
when(client.resource(expectedUri))
.thenReturn(webResource);
when(webResource.get(String.class))
.thenReturn(FixtureAsserts.jsonFixture("/fixtures/hal/cart/expected-public-retrieve-cart.json"));
// Act
ClientCart actualCart = PublicMerchantClient
.newInstance(locale)
.cart()
.retrieveCart(clientUser);
// Assert
assertEquals("Unexpected item count", "2", actualCart.getItemTotal());
}
@Test
public void updateCartItems() throws Exception {
// Arrange
final ClientCart expectedCart = new ClientCart();
expectedCart.setItemTotal("2");
final ClientUser clientUser = new ClientUser();
clientUser.setApiKey("apiKey");
clientUser.setSecretKey("secretKey");
URI expectedUri = URI.create("http://localhost:8080/mbm/cart");
// Test-specific JerseyClient behaviour
when(client.resource(expectedUri))
.thenReturn(webResource);
// Use builder since it is a PUT
when(builder.put(String.class))
.thenReturn(FixtureAsserts.jsonFixture("/fixtures/hal/cart/expected-public-update-cart.json"));
// Act
List<PublicCartItem> cartItems = Lists.newArrayList();
ClientCart actualCart = PublicMerchantClient
.newInstance(locale)
.cart()
.updateCartItems(clientUser, cartItems);
// Assert
assertEquals("Unexpected item count", "2", actualCart.getItemTotal());
}
}