/* * #%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.catalog.domain.Category; import org.broadleafcommerce.core.catalog.domain.Product; import org.broadleafcommerce.core.catalog.domain.Sku; import org.broadleafcommerce.core.order.domain.BundleOrderItem; import org.broadleafcommerce.core.order.domain.DiscreteOrderItem; import org.broadleafcommerce.core.order.domain.GiftWrapOrderItem; import org.broadleafcommerce.core.order.domain.Order; import org.broadleafcommerce.core.order.domain.OrderItem; import org.broadleafcommerce.core.order.service.call.BundleOrderItemRequest; import org.broadleafcommerce.core.order.service.call.DiscreteOrderItemRequest; import org.broadleafcommerce.core.order.service.call.GiftWrapOrderItemRequest; import org.broadleafcommerce.core.pricing.service.exception.PricingException; import org.broadleafcommerce.profile.core.domain.Customer; import org.broadleafcommerce.test.legacy.LegacyCommonSetupBaseTest; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @SuppressWarnings("deprecation") public class LegacyOrderBaseTest extends LegacyCommonSetupBaseTest { @Resource(name = "blOrderService") protected LegacyCartService cartService; private int bundleCount = 0; protected Customer createNamedCustomer() { Customer customer = customerService.createCustomerFromId(null); customer.setUsername(String.valueOf(customer.getId())); return customer; } public Order setUpNamedOrder() throws PricingException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = cartService.createNamedOrderForCustomer("Boxes Named Order", customer); Product newProduct = addTestProduct("Cube Box", "Boxes"); Category newCategory = newProduct.getDefaultCategory(); cartService.addSkuToOrder(order.getId(), newProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2); return order; } public Order setUpAnonymousCartWithInactiveSku() throws PricingException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = cartService.createNewCartForCustomer(customer); Product newProduct = addTestProduct("Plastic Crate", "Crates"); Product newInactiveProduct = addTestProduct("Plastic Crate", "Crates", false); Category newCategory = newProduct.getDefaultCategory(); cartService.addSkuToOrder(order.getId(), newProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2); cartService.addSkuToOrder(order.getId(), newInactiveProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2); cartService.addBundleItemToOrder(order, createBundleOrderItemRequest()); cartService.addBundleItemToOrder(order, createBundleOrderItemRequestWithInactiveSku()); return order; } public Order setUpAnonymousCartWithGiftWrap() throws PricingException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = cartService.createNewCartForCustomer(customer); Product newProduct = addTestProduct("Plastic Crate", "Crates"); Product newInactiveProduct = addTestProduct("Plastic Crate", "Crates"); Product giftWrapProduct = addTestProduct("Gift Box", "Gift Wraps"); Category newCategory = newProduct.getDefaultCategory(); List<OrderItem> addedItems = new ArrayList<OrderItem>(); addedItems.add(cartService.addSkuToOrder(order.getId(), newProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2)); addedItems.add(cartService.addSkuToOrder(order.getId(), newInactiveProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2)); cartService.addGiftWrapItemToOrder(order, createGiftWrapOrderItemRequest(giftWrapProduct, giftWrapProduct.getDefaultSku(), 1, addedItems)); return order; } public Order setUpAnonymousCartWithInactiveGiftWrap() throws PricingException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = cartService.createNewCartForCustomer(customer); Product newProduct = addTestProduct("Plastic Crate", "Crates"); Product newInactiveProduct = addTestProduct("Plastic Crate", "Crates", false); Product giftWrapProduct = addTestProduct("Gift Box", "Gift Wraps"); Category newCategory = newProduct.getDefaultCategory(); List<OrderItem> addedItems = new ArrayList<OrderItem>(); addedItems.add(cartService.addSkuToOrder(order.getId(), newProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2)); addedItems.add(cartService.addSkuToOrder(order.getId(), newInactiveProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2)); cartService.addGiftWrapItemToOrder(order, createGiftWrapOrderItemRequest(giftWrapProduct, giftWrapProduct.getDefaultSku(), 1, addedItems)); return order; } public Order initializeExistingCartWithInactiveSkuAndInactiveBundle(Customer customer) throws PricingException { Product newProduct = addTestProduct("Plastic Crate", "Crates"); Product newInactiveProduct = addTestProduct("Plastic Crate", "Crates", false); Category newCategory = newProduct.getDefaultCategory(); Order order = cartService.createNewCartForCustomer(customer); cartService.addSkuToOrder(order.getId(), newProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2); cartService.addSkuToOrder(order.getId(), newInactiveProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2); cartService.addBundleItemToOrder(order, createBundleOrderItemRequest()); cartService.addBundleItemToOrder(order, createBundleOrderItemRequestWithInactiveSku()); return order; } public Order initializeExistingCart(Customer customer) throws PricingException { Product newProduct = addTestProduct("Plastic Crate", "Crates"); Product newOtherProduct = addTestProduct("Plastic Crate", "Crates"); Category newCategory = newProduct.getDefaultCategory(); Order order = cartService.createNewCartForCustomer(customer); cartService.addSkuToOrder(order.getId(), newProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2); cartService.addSkuToOrder(order.getId(), newOtherProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2); return order; } public BundleOrderItemRequest createBundleOrderItemRequest() { Product screwProduct = addTestProduct("Bookshelf", "Components"); Product shelfProduct = addTestProduct("Bookshelf", "Components"); Product bracketsProduct = addTestProduct("Bookshelf", "Components"); Category category = screwProduct.getDefaultCategory(); List<DiscreteOrderItemRequest> discreteOrderItems = new ArrayList<DiscreteOrderItemRequest>(); discreteOrderItems.add(createDiscreteOrderItemRequest(screwProduct, screwProduct.getDefaultSku(), 20)); discreteOrderItems.add(createDiscreteOrderItemRequest(shelfProduct, shelfProduct.getDefaultSku(), 3)); discreteOrderItems.add(createDiscreteOrderItemRequest(bracketsProduct, bracketsProduct.getDefaultSku(), 6)); BundleOrderItemRequest itemRequest = new BundleOrderItemRequest(); itemRequest.setCategory(category); itemRequest.setName("test bundle " + bundleCount++); itemRequest.setQuantity(1); itemRequest.setDiscreteOrderItems(discreteOrderItems); return itemRequest; } public BundleOrderItemRequest createBundleOrderItemRequestWithInactiveSku() { Product drawerProduct = addTestProduct("Drawer System", "Systems"); Product nailsProduct = addTestProduct("Drawer System", "Systems"); Product tracksProduct = addTestProduct("Drawer System", "Systems", false); Category category = drawerProduct.getDefaultCategory(); List<DiscreteOrderItemRequest> discreteOrderItems = new ArrayList<DiscreteOrderItemRequest>(); discreteOrderItems.add(createDiscreteOrderItemRequest(drawerProduct, drawerProduct.getDefaultSku(), 20)); discreteOrderItems.add(createDiscreteOrderItemRequest(nailsProduct, nailsProduct.getDefaultSku(), 3)); discreteOrderItems.add(createDiscreteOrderItemRequest(tracksProduct, tracksProduct.getDefaultSku(), 6)); BundleOrderItemRequest itemRequest = new BundleOrderItemRequest(); itemRequest.setCategory(category); itemRequest.setName("test bundle " + bundleCount++); itemRequest.setQuantity(1); itemRequest.setDiscreteOrderItems(discreteOrderItems); return itemRequest; } public DiscreteOrderItemRequest createDiscreteOrderItemRequest(Product product, Sku sku, int quantity) { DiscreteOrderItemRequest request = new DiscreteOrderItemRequest(); request.setSku(sku); request.setQuantity(quantity); request.setProduct(product); request.setCategory(product.getDefaultCategory()); return request; } public GiftWrapOrderItemRequest createGiftWrapOrderItemRequest(Product product, Sku sku, int quantity, List<OrderItem> wrappedItems) { GiftWrapOrderItemRequest request = new GiftWrapOrderItemRequest(); request.setSku(sku); request.setQuantity(quantity); request.setProduct(product); request.setCategory(product.getDefaultCategory()); request.setWrappedItems(wrappedItems); return request; } public Order setUpAnonymousCartWithInactiveBundleGiftWrap() throws PricingException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = cartService.createNewCartForCustomer(customer); Product newProduct = addTestProduct("Plastic Crate", "Crates"); Product newInactiveProduct = addTestProduct("Plastic Crate", "Crates", false); Product giftWrapProduct = addTestProduct("Gift Box", "Gift Wraps"); Category category = newProduct.getDefaultCategory(); List<DiscreteOrderItemRequest> discreteOrderItems = new ArrayList<DiscreteOrderItemRequest>(); discreteOrderItems.add(createDiscreteOrderItemRequest(newProduct, newProduct.getDefaultSku(), 1)); discreteOrderItems.add(createDiscreteOrderItemRequest(newInactiveProduct, newInactiveProduct.getDefaultSku(), 1)); discreteOrderItems.add(createGiftWrapOrderItemRequest(giftWrapProduct, giftWrapProduct.getDefaultSku(), 1, new ArrayList<OrderItem>())); BundleOrderItemRequest itemRequest = new BundleOrderItemRequest(); itemRequest.setCategory(category); itemRequest.setName("test bundle " + bundleCount++); itemRequest.setQuantity(1); itemRequest.setDiscreteOrderItems(discreteOrderItems); BundleOrderItem newBundle = (BundleOrderItem) cartService.addBundleItemToOrder(order, itemRequest); List<OrderItem> addedItems = new ArrayList<OrderItem>(); GiftWrapOrderItem giftItem = null; for (DiscreteOrderItem addedItem : newBundle.getDiscreteOrderItems()) { if (addedItem instanceof GiftWrapOrderItem) { giftItem = (GiftWrapOrderItem) addedItem; } else { addedItems.add(addedItem); } } for (OrderItem addedItem : addedItems) { addedItem.setGiftWrapOrderItem(giftItem); } giftItem.getWrappedItems().addAll(addedItems); order = cartService.save(order, false); return order; } public Order setUpAnonymousCartWithBundleGiftWrap() throws PricingException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = cartService.createNewCartForCustomer(customer); BundleOrderItemRequest itemRequest = createBundleOrderItemRequestWithGiftWrap(); BundleOrderItem newBundle = (BundleOrderItem) cartService.addBundleItemToOrder(order, itemRequest); List<OrderItem> addedItems = new ArrayList<OrderItem>(); GiftWrapOrderItem giftItem = null; for (DiscreteOrderItem addedItem : newBundle.getDiscreteOrderItems()) { if (addedItem instanceof GiftWrapOrderItem) { giftItem = (GiftWrapOrderItem) addedItem; } else { addedItems.add(addedItem); } } for (OrderItem addedItem : addedItems) { addedItem.setGiftWrapOrderItem(giftItem); } giftItem.getWrappedItems().addAll(addedItems); order = cartService.save(order, false); return order; } protected BundleOrderItemRequest createBundleOrderItemRequestWithGiftWrap() { Product newProduct = addTestProduct("Plastic Crate", "Crates"); Product newActiveProduct = addTestProduct("Plastic Crate", "Crates"); Product giftWrapProduct = addTestProduct("Gift Box", "Gift Wraps"); Category category = newProduct.getDefaultCategory(); List<DiscreteOrderItemRequest> discreteOrderItems = new ArrayList<DiscreteOrderItemRequest>(); discreteOrderItems.add(createDiscreteOrderItemRequest(newProduct, newProduct.getDefaultSku(), 1)); discreteOrderItems.add(createDiscreteOrderItemRequest(newActiveProduct, newActiveProduct.getDefaultSku(), 1)); discreteOrderItems.add(createGiftWrapOrderItemRequest(giftWrapProduct, giftWrapProduct.getDefaultSku(), 1, new ArrayList<OrderItem>())); BundleOrderItemRequest itemRequest = new BundleOrderItemRequest(); itemRequest.setCategory(category); itemRequest.setName("test bundle " + bundleCount++); itemRequest.setQuantity(1); itemRequest.setDiscreteOrderItems(discreteOrderItems); return itemRequest; } public Order setUpAnonymousCartWithBundleGiftWrapReferringToRootItems() throws PricingException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = cartService.createNewCartForCustomer(customer); Product newProduct = addTestProduct("Plastic Bowl", "Bowls"); Product newActiveProduct = addTestProduct("Plastic Bowl", "Bowls"); Category newCategory = newProduct.getDefaultCategory(); List<OrderItem> addedItems = new ArrayList<OrderItem>(); addedItems.add(cartService.addSkuToOrder(order.getId(), newProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2)); addedItems.add(cartService.addSkuToOrder(order.getId(), newActiveProduct.getDefaultSku().getId(), newProduct.getId(), newCategory.getId(), 2)); BundleOrderItem newBundle = (BundleOrderItem) cartService.addBundleItemToOrder(order, createBundleOrderItemRequestWithGiftWrap()); GiftWrapOrderItem giftItem = null; for (DiscreteOrderItem addedItem : newBundle.getDiscreteOrderItems()) { if (addedItem instanceof GiftWrapOrderItem) { giftItem = (GiftWrapOrderItem) addedItem; } } for (OrderItem addedItem : addedItems) { addedItem.setGiftWrapOrderItem(giftItem); } giftItem.getWrappedItems().addAll(addedItems); order = cartService.save(order, false); return order; } public Order setUpAnonymousCartWithBundleGiftWrapReferringItemsInAnotherBundle() throws PricingException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = cartService.createNewCartForCustomer(customer); BundleOrderItem newBundle = (BundleOrderItem) cartService.addBundleItemToOrder(order, createBundleOrderItemRequest()); BundleOrderItem newBundle2 = (BundleOrderItem) cartService.addBundleItemToOrder(order, createBundleOrderItemRequestWithGiftWrap()); GiftWrapOrderItem giftItem = null; for (DiscreteOrderItem addedItem : newBundle2.getDiscreteOrderItems()) { if (addedItem instanceof GiftWrapOrderItem) { giftItem = (GiftWrapOrderItem) addedItem; } } for (DiscreteOrderItem addedItem : newBundle.getDiscreteOrderItems()) { addedItem.setGiftWrapOrderItem(giftItem); } giftItem.getWrappedItems().addAll(newBundle.getDiscreteOrderItems()); order = cartService.save(order, false); return order; } }