/*
* #%L
* BroadleafCommerce Integration
* %%
* Copyright (C) 2009 - 2013 Broadleaf Commerce
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package org.broadleafcommerce.core.order.service.legacy;
import org.broadleafcommerce.core.order.domain.Order;
import org.broadleafcommerce.core.order.domain.OrderItem;
import org.broadleafcommerce.core.order.service.call.MergeCartResponse;
import org.broadleafcommerce.core.order.service.type.OrderStatus;
import org.broadleafcommerce.core.pricing.service.exception.PricingException;
import org.broadleafcommerce.profile.core.domain.Customer;
import org.springframework.transaction.annotation.Transactional;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
public class LegacyCartTest extends LegacyOrderBaseTest {
@Test(groups = { "testCartAndNamedOrderLegacy" })
@Transactional
public void testMoveAllItemsToCartFromNamedOrder() throws PricingException {
Order namedOrder = setUpNamedOrder();
List<OrderItem> namedOrderItems = new ArrayList<OrderItem>();
namedOrderItems.addAll(namedOrder.getOrderItems());
Order cart = cartService.createNewCartForCustomer(namedOrder.getCustomer());
cart = cartService.moveAllItemsToCartFromNamedOrder(namedOrder);
assert namedOrderItems.equals(cart.getOrderItems());
assert namedOrder.getOrderItems().size() == 0;
}
@Test(groups = { "testCartAndNamedOrderLegacy" })
@Transactional
public void testAddAllItemsToCartFromNamedOrder() throws PricingException {
Order namedOrder = setUpNamedOrder();
List<OrderItem> namedOrderItems = new ArrayList<OrderItem>();
namedOrderItems.addAll(namedOrder.getOrderItems());
Order cart = cartService.createNewCartForCustomer(namedOrder.getCustomer());
cartService.setMoveNamedOrderItems(false);
cart = cartService.addAllItemsToCartFromNamedOrder(namedOrder);
assert namedOrderItems.equals(cart.getOrderItems());
cartService.setMoveNamedOrderItems(true);
}
@Test(groups = { "testCartAndNamedOrderLegacy" })
@Transactional
public void testAddAllItemsToCartFromNamedOrderWithoutExistingCart() throws PricingException {
Order namedOrder = setUpNamedOrder();
List<OrderItem> namedOrderItems = new ArrayList<OrderItem>();
namedOrderItems.addAll(namedOrder.getOrderItems());
cartService.setMoveNamedOrderItems(false);
Order cart = cartService.addAllItemsToCartFromNamedOrder(namedOrder);
assert namedOrderItems.equals(cart.getOrderItems());
cartService.setMoveNamedOrderItems(true);
}
@Test(groups = { "testCartAndNamedOrderLegacy" })
@Transactional
public void testAddItemToCartFromNamedOrder() throws PricingException {
Order namedOrder = setUpNamedOrder();
List<OrderItem> namedOrderItems = new ArrayList<OrderItem>();
namedOrderItems.addAll(namedOrder.getOrderItems());
Order cart = cartService.createNewCartForCustomer(namedOrder.getCustomer());
cartService.setMoveNamedOrderItems(false);
OrderItem movedItem = cartService.moveItemToCartFromNamedOrder(namedOrder, namedOrderItems.get(0));
cartService.setMoveNamedOrderItems(true);
assert movedItem != null;
assert cart.getOrderItems().size() == 1;
}
@Test(groups = { "testCartAndNamedOrderLegacy" })
@Transactional
public void testMoveItemToCartFromNamedOrder() throws PricingException {
Order namedOrder = setUpNamedOrder();
List<OrderItem> namedOrderItems = new ArrayList<OrderItem>();
namedOrderItems.addAll(namedOrder.getOrderItems());
Order cart = cartService.createNewCartForCustomer(namedOrder.getCustomer());
OrderItem movedItem = cartService.moveItemToCartFromNamedOrder(namedOrder, namedOrderItems.get(0));
List<Order> customerNamedOrders = cartService.findOrdersForCustomer(namedOrder.getCustomer(), OrderStatus.NAMED);
assert customerNamedOrders.size() == 0;
assert movedItem != null;
assert cart.getOrderItems().size() == 1;
assert namedOrder.getOrderItems().size() == 0;
}
@Test(groups = { "testCartAndNamedOrderLegacy" })
@Transactional
public void testMoveItemToCartFromNamedOrderWithoutExistingCart() throws PricingException {
Order namedOrder = setUpNamedOrder();
List<OrderItem> namedOrderItems = new ArrayList<OrderItem>();
namedOrderItems.addAll(namedOrder.getOrderItems());
OrderItem movedItem = cartService.moveItemToCartFromNamedOrder(namedOrder, namedOrderItems.get(0));
List<Order> customerNamedOrders = cartService.findOrdersForCustomer(namedOrder.getCustomer(), OrderStatus.NAMED);
Order cart = cartService.findCartForCustomer(namedOrder.getCustomer());
assert customerNamedOrders.size() == 0;
assert movedItem != null;
assert cart.getOrderItems().size() == 1;
assert namedOrder.getOrderItems().size() == 0;
}
@Test(groups = { "testCartAndNamedOrderLegacy" })
@Transactional
public void testMoveItemToCartFromNamedOrderByIds() throws PricingException {
Order namedOrder = setUpNamedOrder();
List<OrderItem> namedOrderItems = new ArrayList<OrderItem>();
namedOrderItems.addAll(namedOrder.getOrderItems());
OrderItem movedItem = cartService.moveItemToCartFromNamedOrder(namedOrder.getCustomer().getId(),
namedOrder.getName(), namedOrderItems.get(0).getId(), namedOrderItems.get(0).getQuantity());
List<Order> customerNamedOrders = cartService.findOrdersForCustomer(namedOrder.getCustomer(), OrderStatus.NAMED);
Order cart = cartService.findCartForCustomer(namedOrder.getCustomer());
assert customerNamedOrders.size() == 0;
assert movedItem != null;
assert cart.getOrderItems().size() == 1;
assert namedOrder.getOrderItems().size() == 0;
}
@Transactional
@Test(groups = { "testMergeCartLegacy" })
public void testMergeToEmptyCart() throws PricingException {
Order anonymousCart = setUpAnonymousCartWithInactiveSku();
Customer customer = customerService.saveCustomer(createNamedCustomer());
MergeCartResponse response = cartService.mergeCart(customer, anonymousCart);
assert response.getAddedItems().size() == 2;
assert response.getOrder().getOrderItems().size() == 2;
assert response.isMerged() == false;
assert response.getRemovedItems().size() == 2;
}
@Transactional
@Test(groups = { "testMergeCartLegacy" })
public void testMergeToExistingCart() throws PricingException {
//sets up anonymous cart with a DiscreteOrderItem, inactive DiscreteOrderItem, BundleOrderItem, and inactive BundleOrderItem
Order anonymousCart = setUpAnonymousCartWithInactiveSku();
Customer customer = customerService.saveCustomer(createNamedCustomer());
//sets up existing cart with a DiscreteOrderItem, inactive DiscreteOrderItem, BundleOrderItem, and inactive BundleOrderItem
initializeExistingCartWithInactiveSkuAndInactiveBundle(customer);
MergeCartResponse response = cartService.mergeCart(customer, anonymousCart);
assert response.getAddedItems().size() == 2;
assert response.getOrder().getOrderItems().size() == 4;
assert response.isMerged();
assert response.getRemovedItems().size() == 4;
}
@Transactional
@Test(groups = { "testMergeCartLegacy" })
public void testMergeToExistingCartWithGiftWrapOrderItems() throws PricingException {
//FIXME: This test needs to be fixed
/*
//sets up anonymous cart with two DiscreteOrderItems, and a GiftWrapOrderItem
Order anonymousCart = setUpAnonymousCartWithGiftWrap();
Customer customer = customerService.saveCustomer(createNamedCustomer());
//sets up existing cart with two active DiscreteOrderItems
initializeExistingCart(customer);
MergeCartResponse response = cartService.mergeCart(customer, anonymousCart);
assert response.getAddedItems().size() == 3;
assert response.getOrder().getOrderItems().size() == 5;
assert response.isMerged();
assert response.getRemovedItems().size() == 0;
//sets up anonymous cart with a DiscreteOrderItem, inactive DiscreteOrderItem and inactive GiftWrapOrderItem (due to inactive wrapped item)
anonymousCart = setUpAnonymousCartWithInactiveGiftWrap();
customer = customerService.saveCustomer(createNamedCustomer());
//sets up existing cart with two active DiscreteOrderItems
initializeExistingCart(customer);
response = cartService.mergeCart(customer, anonymousCart);
assert response.getAddedItems().size() == 1;
assert response.getOrder().getOrderItems().size() == 3;
assert response.isMerged();
assert response.getRemovedItems().size() == 2;
//sets up anonymous cart with a DiscreteOrderItem, inactive DiscreteOrderItem and inactive GiftWrapOrderItem (due to inactive wrapped item) inside a BundleOrderItem
anonymousCart = setUpAnonymousCartWithInactiveBundleGiftWrap();
customer = customerService.saveCustomer(createNamedCustomer());
//sets up existing cart with two active DiscreteOrderItems
initializeExistingCart(customer);
response = cartService.mergeCart(customer, anonymousCart);
assert response.getAddedItems().size() == 0;
assert response.getOrder().getOrderItems().size() == 2;
assert response.isMerged();
assert response.getRemovedItems().size() == 1;
//sets up anonymous cart with active DiscreteOrderItems, and active GiftWrapOrderItem inside a BundleOrderItem
anonymousCart = setUpAnonymousCartWithBundleGiftWrap();
customer = customerService.saveCustomer(createNamedCustomer());
//sets up existing cart with two active DiscreteOrderItems
initializeExistingCart(customer);
response = cartService.mergeCart(customer, anonymousCart);
assert response.getAddedItems().size() == 1;
assert response.getOrder().getOrderItems().size() == 3;
assert response.isMerged();
assert response.getRemovedItems().size() == 0;
//sets up anonymous cart with active DiscreteOrderItems, and active GiftWrapOrderItem inside a BundleOrderItem. Active OrderItems are also in the root of the order and the bundled GiftWrapOrderItem wraps the root OrderItems
anonymousCart = setUpAnonymousCartWithBundleGiftWrapReferringToRootItems();
customer = customerService.saveCustomer(createNamedCustomer());
//sets up existing cart with two active DiscreteOrderItems
initializeExistingCart(customer);
response = cartService.mergeCart(customer, anonymousCart);
assert response.getAddedItems().size() == 3;
assert response.getOrder().getOrderItems().size() == 5;
assert response.isMerged();
assert response.getRemovedItems().size() == 0;
//sets up anonymous cart with two BundleOrderItems, one of which has a GiftWrapOrderItem. The GiftWrapOrderItem wraps the DiscreteOrderItems from the other bundle, which makes its bundle inactive.
anonymousCart = setUpAnonymousCartWithBundleGiftWrapReferringItemsInAnotherBundle();
customer = customerService.saveCustomer(createNamedCustomer());
//sets up existing cart with two active DiscreteOrderItems
initializeExistingCart(customer);
response = cartService.mergeCart(customer, anonymousCart);
assert response.getAddedItems().size() == 1;
assert response.getOrder().getOrderItems().size() == 3;
assert response.isMerged();
assert response.getRemovedItems().size() == 1;
*/
}
}