public String viewOrderHistory(HttpServletRequest request, Model model) { List<Order> orders = orderService.findOrdersForCustomer(CustomerState.getCustomer(), OrderStatus.SUBMITTED); model.addAttribute("orders", orders); return getOrderHistoryView(); }
@Test(groups = { "getOrdersForCustomer" }, dependsOnGroups = { "readCustomer", "findCurrentCartForCustomer" }) @Transactional public void getOrdersForCustomer() { String username = "customer1"; Customer customer = customerService.readCustomerByUsername(username); List<Order> orders = orderService.findOrdersForCustomer(customer); assert orders != null; assert orders.size() > 0; }
@Test(groups = { "testReadOrdersForCustomer" }, dependsOnGroups = { "findNamedOrderForCustomer" }) @Transactional public void testReadOrdersForCustomer() throws PricingException { Customer customer = customerService.createCustomerFromId(null); Order order = orderService.createNewCartForCustomer(customer); order.setStatus(OrderStatus.IN_PROCESS); order = orderService.save(order, false); List<Order> newOrders = orderService.findOrdersForCustomer(customer, OrderStatus.IN_PROCESS); boolean containsOrder = false; if (newOrders.contains(order)) { containsOrder = true; } assert containsOrder == true; containsOrder = false; newOrders = orderService.findOrdersForCustomer(customer, null); if (newOrders.contains(order)) { containsOrder = true; } assert containsOrder == true; }
@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 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); }
@PostAuthorize("permitAll") @Transactional public List<Order> getOrdersByCustomer(final UserDetails userDetails) throws CustomerNotFoundException { return Match.of(userDetails) .whenType(AdminUserDetails.class).then(this::getAllOrders) .whenType(CustomerUserDetails.class).then(() -> { final Long id = ((CustomerUserDetails) userDetails).getId(); return Optional.ofNullable(customerService.readCustomerById(id)) .map(c -> orderService.findOrdersForCustomer(c)) .orElseThrow(() -> new CustomerNotFoundException(format("Cannot find customer with ID: %d", id))); }).otherwise(Collections::emptyList) .get(); }