@Test(groups = { "testOrderProperties" }, dependsOnGroups = { "testReadOrdersForCustomer" }) public void testOrderProperties() throws PricingException { Customer customer = customerService.createCustomerFromId(null); Order order = orderService.createNewCartForCustomer(customer); assert order.getSubTotal() == null; assert order.getTotal() == null; Calendar testCalendar = Calendar.getInstance(); order.setSubmitDate(testCalendar.getTime()); assert order.getSubmitDate().equals(testCalendar.getTime()); }
@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 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 = { "createCartForCustomer" }, dependsOnGroups = { "readCustomer", "createPhone" }) @Transactional @Rollback(false) public void createCartForCustomer() { String userName = "customer1"; Customer customer = customerService.readCustomerByUsername(userName); Order order = orderService.createNewCartForCustomer(customer); assert order != null; assert order.getId() != null; this.orderId = order.getId(); }
@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 = { "findNamedOrderForCustomer" }, dependsOnGroups = { "findOrderByOrderNumber" }) @Transactional public void findNamedOrderForCustomer() throws PricingException { Customer customer = customerService.createCustomerFromId(null); Order order = orderService.createNewCartForCustomer(customer); order.setStatus(OrderStatus.NAMED); order.setName("COOL ORDER"); order = orderService.save(order, false); Long orderId = order.getId(); Order newOrder = orderService.findNamedOrderForCustomer("COOL ORDER", customer); assert newOrder.getId().equals(orderId); }
@Test(groups = { "findCartForAnonymousCustomer" }, dependsOnGroups = { "getOrdersForCustomer" }) public void findCartForAnonymousCustomer() { Customer customer = customerService.createCustomerFromId(null); Order order = orderService.findCartForCustomer(customer); assert order == null; order = orderService.createNewCartForCustomer(customer); Long orderId = order.getId(); Order newOrder = orderService.findOrderById(orderId); assert newOrder != null; assert newOrder.getCustomer() != null; }
@Test(groups = {"testCustomerOffers"}, dependsOnGroups = { "testOfferCodeDao"}) @Transactional public void testCustomerOffers() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); Offer offer = createOfferUtility.createOffer("1.20 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 1.20, null, true, true, 10, null); CustomerOffer customerOffer = new CustomerOfferImpl(); customerOffer.setCustomer(order.getCustomer()); customerOffer.setOffer(offer); customerOffer = customerOfferDao.save(customerOffer); CustomerOffer customerOfferTest = customerOfferDao.readCustomerOfferById(customerOffer.getId()); assert (customerOffer.getId().equals(customerOfferTest.getId())); }
@Test(groups = { "testSubmitOrder" }, dependsOnGroups = { "findNamedOrderForCustomer" }) public void testSubmitOrder() throws PricingException { Customer customer = customerService.createCustomerFromId(null); Order order = orderService.createNewCartForCustomer(customer); order.setStatus(OrderStatus.IN_PROCESS); order = orderService.save(order, false); Long orderId = order.getId(); Order confirmedOrder = orderService.confirmOrder(order); confirmedOrder = orderService.findOrderById(confirmedOrder.getId()); Long confirmedOrderId = confirmedOrder.getId(); assert orderId.equals(confirmedOrderId); assert confirmedOrder.getStatus().equals(OrderStatus.SUBMITTED); }
@Test(groups = {"testPercentageOffOffer"}, dependsOnGroups = { "offerCreateSku1" }) @Transactional public void testPercentOffOfferWithItemMinPriceQuantityReduction() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); order.addOrderItem(createDiscreteOrderItem(sku1, 3D, null, true, 2, order)); order.addOfferCode(createOfferUtility.createOfferCode("75 Percent Off Items Over $5.00", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 75, "orderItem.?price.getAmount()>5.00", true, true, 10)); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); // Evaluate the subtotal again with a reduced quantity to ensure that the // offer is NOT applied due to the subtotal being greater than $5.00 order.getOrderItems().get(0).setQuantity(1); offerService.applyAndSaveOffersToOrder(offers, order); assert ( order.getSubTotal().equals(new Money(3.00D) )); }
@Test(groups = {"testPercentageOffOffer"}, dependsOnGroups = { "offerCreateSku1" }) @Transactional public void testPercentOffOfferWithItemMinPriceSecondEvaluation() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); order.addOrderItem(createDiscreteOrderItem(sku1, 10D, null, true, 1, order)); order.addOfferCode(createOfferUtility.createOfferCode("75 Percent Off Items Over $5.00", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 75, "orderItem.?price.getAmount()>5.00", true, true, 10)); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); // Evaluate the subtotal again to ensure that the second calculation // is based on the pre-offer price, not the reduced price offerService.applyAndSaveOffersToOrder(offers, order); assert ( order.getSubTotal().equals(new Money(2.50D) )); }
@Test(groups = {"testOfferLowerSalePriceWithNotCombinableOffer"}, dependsOnGroups = { "testOfferNotCombinableItemOffers"}) @Transactional public void testOfferLowerSalePriceWithNotCombinableOffer() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); order.addOrderItem(createDiscreteOrderItem(sku1, 100D, 50D, true, 2, order)); order.addOrderItem(createDiscreteOrderItem(sku2, 100D, null, true, 2, order)); order.addOfferCode(createOfferUtility.createOfferCode("20 Percent Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 20, null, true, true, 1)); order.addOfferCode(createOfferUtility.createOfferCode("30 Dollars Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.AMOUNT_OFF, 30, null, true, false, 1)); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); assert (order.getSubTotal().equals(new Money(180D))); }
@Test(groups = {"testOfferNotStackableOrderOffers"}, dependsOnGroups = { "testOfferLowerSalePriceWithNotCombinableOffer2"}) @Transactional public void testOfferNotStackableOrderOffers() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); order.addOrderItem(createDiscreteOrderItem(sku1, 100D, null, true, 2, order)); order.addOrderItem(createDiscreteOrderItem(sku2, 100D, null, true, 2, order)); order.addOfferCode(createOfferUtility.createOfferCode("20 Percent Off Order Offer", OfferType.ORDER, OfferDiscountType.PERCENT_OFF, 20, "order.subTotal.getAmount() >= 400", true, true, 1)); order.addOfferCode(createOfferUtility.createOfferCode("50 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 50, "order.subTotal.getAmount() >= 400", false, true, 1)); order.addOfferCode(createOfferUtility.createOfferCode("100 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 100, "order.subTotal.getAmount() >= 400", false, true, 1)); order.addOfferCode(createOfferUtility.createOfferCode("30 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 30, "order.subTotal.getAmount() < 400", false, true, 1)); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); // assert order.getSubTotal().subtract(order.getOrderAdjustmentsValue()).equals(new Money(240D)); }
@Test(groups = {"offerUsedForPricing"}, dependsOnGroups = { "offerCreateSku1", "offerCreateSku2" }) @Transactional public void testOfferUsedForPricing() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); order.addOrderItem(createDiscreteOrderItem(sku1, 10D, null, true, 2, order)); order.addOrderItem(createDiscreteOrderItem(sku2, 20D, null, true, 1, order)); order.addOfferCode(createOfferUtility.createOfferCode("20 Percent Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 20, "discreteOrderItem.sku.id == " + sku1, true, true, 10)); order.addOfferCode(createOfferUtility.createOfferCode("3 Dollars Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.AMOUNT_OFF, 3, "discreteOrderItem.sku.id != " + sku1, true, true, 10)); order.addOfferCode(createOfferUtility.createOfferCode("1.20 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 1.20, null, true, true, 10)); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); assert order.getSubTotal().subtract(order.getOrderAdjustmentsValue()).equals(new Money(31.80D)); }
@Test(groups = {"testOfferNotCombinableOrderOffers"}, dependsOnGroups = { "testOfferNotStackableOrderOffers"}) @Transactional public void testOfferNotCombinableOrderOffers() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); order.addOrderItem(createDiscreteOrderItem(sku1, 100D, null, true, 2, order)); order.addOrderItem(createDiscreteOrderItem(sku2, 100D, null, true, 2, order)); order.addOfferCode(createOfferUtility.createOfferCode("20 Percent Off Order Offer", OfferType.ORDER, OfferDiscountType.PERCENT_OFF, 20, null, true, true, 1)); order.addOfferCode(createOfferUtility.createOfferCode("30 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 30, null, true, true, 1)); order.addOfferCode(createOfferUtility.createOfferCode("50 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 50, null, true, false, 1)); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); assert order.getSubTotal().subtract(order.getOrderAdjustmentsValue()).equals(new Money(290D)); }
@Test(groups = {"testOfferNotCombinableItemOffers"}, dependsOnGroups = { "offerUsedForPricing"}) @Transactional public void testOfferNotCombinableItemOffers() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); order.addOrderItem(createDiscreteOrderItem(sku1, 100D, null, true, 2, order)); order.addOrderItem(createDiscreteOrderItem(sku2, 100D, null, true, 2, order)); order.addOfferCode(createOfferUtility.createOfferCode("20 Percent Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 20, "discreteOrderItem.sku.id == " + sku1, true, true, 1)); order.addOfferCode(createOfferUtility.createOfferCode("30 Dollars Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.AMOUNT_OFF, 30, "discreteOrderItem.sku.id == " + sku1, true, false, 1)); order.addOfferCode(createOfferUtility.createOfferCode("20 Percent Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 20, "discreteOrderItem.sku.id != " + sku1, true, false, 1)); order.addOfferCode(createOfferUtility.createOfferCode("30 Dollars Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.AMOUNT_OFF, 30, "discreteOrderItem.sku.id != " + sku1, true, true, 1)); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); assert (order.getSubTotal().equals(new Money(300D))); }
@Test(groups = {"testPercentageOffOffer"}, dependsOnGroups = { "offerCreateSku1", "offerCreateSku2" }) @Transactional public void testTwoPercentOffOffers() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); FixedPriceFulfillmentOption option = new FixedPriceFulfillmentOptionImpl(); option.setPrice(new Money(0)); orderService.save(order, false); order.addOrderItem(createDiscreteOrderItem(sku1, 1000D, null, true, 1, order)); order.addOrderItem(createDiscreteOrderItem(sku2, 100D, null, true, 1, order)); order.addOfferCode(createOfferUtility.createOfferCode("10 Percent Off All Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 10, null, false, true, 10)); order.addOfferCode(createOfferUtility.createOfferCode("15 Percent Off Item Sku2 Offer", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 15, "discreteOrderItem.sku.id == " + sku2, false, true, 10)); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); assert ( order.getSubTotal().equals(new Money(985D) )); }
public Order setUpCartWithActiveSku() throws AddToCartException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = orderService.createNewCartForCustomer(customer); Product newProduct = addTestProduct("Plastic Crate Active", "Crates"); Category newCategory = newProduct.getDefaultCategory(); order = orderService.addItem(order.getId(), new OrderItemRequestDTO(newProduct.getId(), newProduct.getDefaultSku().getId(), newCategory.getId(), 1), true); return order; }
@Test(groups = {"testGlobalOffers"}, dependsOnGroups = { "testOfferNotCombinableOrderOffersWithItemOffer"}) @Transactional public void testGlobalOffers() throws Exception { Order order = orderService.createNewCartForCustomer(createCustomer()); order.addOrderItem(createDiscreteOrderItem(sku1, 10D, null, true, 2, order)); order.addOrderItem(createDiscreteOrderItem(sku2, 20D, null, true, 1, order)); order.addOfferCode(createOfferUtility.createOfferCode("20 Percent Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 20, "discreteOrderItem.sku.id == " + sku1, true, true, 10)); order.addOfferCode(createOfferUtility.createOfferCode("3 Dollars Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.AMOUNT_OFF, 3, "discreteOrderItem.sku.id != " + sku1, true, true, 10)); Offer offer = createOfferUtility.createOffer("1.20 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 1.20, null, true, true, 10, null); offer.setAutomaticallyAdded(true); offer = offerService.save(offer); List<Offer> offers = offerService.buildOfferListForOrder(order); offerService.applyAndSaveOffersToOrder(offers, order); assert order.getSubTotal().subtract(order.getOrderAdjustmentsValue()).equals(new Money(31.80D)); }
public Order setUpCartWithInactiveSku() throws AddToCartException { Customer customer = customerService.saveCustomer(createNamedCustomer()); Order order = orderService.createNewCartForCustomer(customer); Product newProduct = addTestProduct("Plastic Crate Should Be Inactive", "Crates"); Category newCategory = newProduct.getDefaultCategory(); order = orderService.addItem(order.getId(), new OrderItemRequestDTO(newProduct.getId(), newProduct.getDefaultSku().getId(), newCategory.getId(), 1), true); // Make the SKU inactive newProduct.getDefaultSku().setActiveEndDate(DateUtils.addDays(new Date(), -1)); catalogService.saveSku(newProduct.getDefaultSku()); return order; }