@Test(groups = { "testCartAndNamedOrder" }) @Transactional public void testAddAllItemsToCartFromNamedOrderWithoutExistingCart() throws RemoveFromCartException, AddToCartException { Order namedOrder = setUpNamedOrder(); List<OrderItem> namedOrderItems = new ArrayList<>(); namedOrderItems.addAll(namedOrder.getOrderItems()); orderService.setMoveNamedOrderItems(false); Order cart = orderService.addAllItemsFromNamedOrder(namedOrder, true); orderService.setMoveNamedOrderItems(true); assert cartContainsOnlyTheseItems(cart, namedOrderItems); }
protected boolean cartContainsOnlyTheseItems(Order cart, List<OrderItem> orderItems) { List<OrderItem> cartOrderItems = new ArrayList<>(cart.getOrderItems()); for (OrderItem item : orderItems) { ListIterator<OrderItem> it = cartOrderItems.listIterator(); while (it.hasNext()) { OrderItem otherItem = it.next(); if (orderItemsSemanticallyEqual((DiscreteOrderItem) item, (DiscreteOrderItem) otherItem)) { it.remove(); break; } } } return cartOrderItems.size() == 0; }
@Transactional @Test(groups = { "testMergeCart" }) public void testMergeWithNoCustomerCart() throws PricingException, RemoveFromCartException, AddToCartException { Order anonymousCart = setUpCartWithActiveSku(); Order customerCart = null; Customer customer = customerService.saveCustomer(createNamedCustomer()); MergeCartResponse response = mergeCartService.mergeCart(customer, anonymousCart); assert response.getOrder().getOrderItems().size() == 1; assert response.getOrder().getId().equals(anonymousCart.getId()); assert response.isMerged() == false; }
@Transactional @Test(groups = { "testMergeCart" }) public void testMergeWithBothCarts() throws PricingException, RemoveFromCartException, AddToCartException { Order anonymousCart = setUpCartWithActiveSku(); Order customerCart = setUpCartWithActiveSku(); Customer customer = customerCart.getCustomer(); MergeCartResponse response = mergeCartService.mergeCart(customer, anonymousCart); assert response.getOrder().getOrderItems().size() == 1; assert response.getOrder().getId().equals(anonymousCart.getId()); assert response.isMerged() == false; }
@Transactional @Test(groups = { "testMergeCart" }) public void testMergeWithInactiveAnonymousCart() throws PricingException, RemoveFromCartException, AddToCartException { Order anonymousCart = null; Order customerCart = setUpCartWithInactiveSku(); Customer customer = customerCart.getCustomer(); MergeCartResponse response = mergeCartService.mergeCart(customer, anonymousCart); assert response.getOrder().getOrderItems().size() == 0; assert response.getOrder().getId().equals(customerCart.getId()); assert response.isMerged() == false; }
@Transactional @Test(groups = { "testMergeCart" }) public void testMergeWithNoAnonymousCart() throws PricingException, RemoveFromCartException, AddToCartException { Order anonymousCart = null; Order customerCart = setUpCartWithActiveSku(); Customer customer = customerCart.getCustomer(); MergeCartResponse response = mergeCartService.mergeCart(customer, anonymousCart); assert response.getOrder().getOrderItems().size() == 1; assert response.getOrder().getId().equals(customerCart.getId()); assert response.isMerged() == false; }
@Test(groups = { "testCartAndNamedOrder" }) @Transactional public void testMoveAllItemsToCartFromNamedOrder() throws RemoveFromCartException, AddToCartException { Order namedOrder = setUpNamedOrder(); List<OrderItem> namedOrderItems = new ArrayList<>(); namedOrderItems.addAll(namedOrder.getOrderItems()); Order cart = orderService.createNewCartForCustomer(namedOrder.getCustomer()); cart = orderService.addAllItemsFromNamedOrder(namedOrder, true); assert cartContainsOnlyTheseItems(cart, namedOrderItems); assert namedOrder.getOrderItems().size() == 0; }
@Test(groups = { "testCartAndNamedOrder" }) @Transactional public void testMoveItemToCartFromNamedOrderWithoutExistingCart() throws RemoveFromCartException, AddToCartException { Order namedOrder = setUpNamedOrder(); List<OrderItem> namedOrderItems = new ArrayList<>(); namedOrderItems.addAll(namedOrder.getOrderItems()); List<OrderItem> movedOrderItems = new ArrayList<>(); movedOrderItems.add(namedOrderItems.get(0)); Order cart = orderService.addItemFromNamedOrder(namedOrder, movedOrderItems.get(0), true); List<Order> customerNamedOrders = orderService.findOrdersForCustomer(namedOrder.getCustomer(), OrderStatus.NAMED); assert customerNamedOrders.size() == 0; assert cart.getOrderItems().size() == 1; assert namedOrder.getOrderItems().size() == 0; assert cartContainsOnlyTheseItems(cart, movedOrderItems); }
@Test(groups = { "testCartAndNamedOrder" }) @Transactional public void testAddItemToCartFromNamedOrder() throws RemoveFromCartException, AddToCartException { Order namedOrder = setUpNamedOrder(); List<OrderItem> namedOrderItems = new ArrayList<>(); namedOrderItems.addAll(namedOrder.getOrderItems()); List<OrderItem> movedOrderItems = new ArrayList<>(); movedOrderItems.add(namedOrderItems.get(0)); Order cart = orderService.createNewCartForCustomer(namedOrder.getCustomer()); orderService.setMoveNamedOrderItems(false); cart = orderService.addItemFromNamedOrder(namedOrder, movedOrderItems.get(0), true); orderService.setMoveNamedOrderItems(true); assert cartContainsOnlyTheseItems(cart, movedOrderItems); }
@Test(groups = { "testCartAndNamedOrder" }) @Transactional public void testAddAllItemsToCartFromNamedOrder() throws RemoveFromCartException, AddToCartException { Order namedOrder = setUpNamedOrder(); List<OrderItem> namedOrderItems = new ArrayList<>(); namedOrderItems.addAll(namedOrder.getOrderItems()); Order cart = orderService.createNewCartForCustomer(namedOrder.getCustomer()); orderService.setMoveNamedOrderItems(false); cart = orderService.addAllItemsFromNamedOrder(namedOrder, true); orderService.setMoveNamedOrderItems(true); assert cartContainsOnlyTheseItems(cart, namedOrderItems); }
@Test(groups = { "testCartAndNamedOrder" }) @Transactional public void testMoveItemToCartFromNamedOrder() throws RemoveFromCartException, AddToCartException { Order namedOrder = setUpNamedOrder(); List<OrderItem> namedOrderItems = new ArrayList<>(); namedOrderItems.addAll(namedOrder.getOrderItems()); List<OrderItem> movedOrderItems = new ArrayList<>(); movedOrderItems.add(namedOrderItems.get(0)); Order cart = orderService.createNewCartForCustomer(namedOrder.getCustomer()); cart = orderService.addItemFromNamedOrder(namedOrder, movedOrderItems.get(0), true); List<Order> customerNamedOrders = orderService.findOrdersForCustomer(namedOrder.getCustomer(), OrderStatus.NAMED); assert customerNamedOrders.size() == 0; assert cart.getOrderItems().size() == 1; assert namedOrder.getOrderItems().size() == 0; assert cartContainsOnlyTheseItems(cart, movedOrderItems); }