@Test public void findCartForNullCustomerId() { assert orderService.findCartForCustomer(new CustomerImpl()) == null; }
@Override public void execute(WebRequest request, Authentication authResult) { Customer loggedInCustomer = customerService.readCustomerByUsername(authResult.getName()); Customer anonymousCustomer = customerStateRequestProcessor.getAnonymousCustomer(request); Order cart = null; if (anonymousCustomer != null) { cart = orderService.findCartForCustomer(anonymousCustomer); } MergeCartResponse mergeCartResponse; try { mergeCartResponse = mergeCartService.mergeCart(loggedInCustomer, cart); } catch (PricingException e) { throw new RuntimeException(e); } catch (RemoveFromCartException e) { throw new RuntimeException(e); } if (BLCRequestUtils.isOKtoUseSession(request)) { request.setAttribute(mergeCartResponseKey, mergeCartResponse, WebRequest.SCOPE_GLOBAL_SESSION); } }
@Test(groups = { "findCurrentCartForCustomer" }, dependsOnGroups = { "readCustomer", "createPhone", "createCartForCustomer" }) @Transactional @Rollback(false) public void findCurrentCartForCustomer() { String userName = "customer1"; Customer customer = customerService.readCustomerByUsername(userName); Order order = orderService.findCartForCustomer(customer); assert order != null; assert order.getId() != null; this.orderId = order.getId(); }
/** * Looks up the anonymous customer and merges that cart with the cart from the given logged in <b>customer</b>. This * will also remove the customer from session after it has finished since it is no longer needed */ public Order mergeCart(Customer customer, WebRequest request) { Customer anonymousCustomer = customerStateRequestProcessor.getAnonymousCustomer(request); MergeCartResponse mergeCartResponse; try { Order cart = orderService.findCartForCustomer(anonymousCustomer); mergeCartResponse = mergeCartService.mergeCart(customer, cart); } catch (PricingException e) { throw new RuntimeException(e); } catch (RemoveFromCartException e) { throw new RuntimeException(e); } if (BLCRequestUtils.isOKtoUseSession(request)) { // The anonymous customer from session is no longer needed; it can be safely removed request.removeAttribute(CustomerStateRequestProcessor.getAnonymousCustomerSessionAttributeName(), WebRequest.SCOPE_GLOBAL_SESSION); request.removeAttribute(CustomerStateRequestProcessor.getAnonymousCustomerIdSessionAttributeName(), WebRequest.SCOPE_GLOBAL_SESSION); request.setAttribute(mergeCartResponseKey, mergeCartResponse, WebRequest.SCOPE_GLOBAL_SESSION); } return mergeCartResponse.getOrder(); }
@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={"testCreatePaymentInfo"}, dependsOnGroups={"createPaymentInfo"}) @Transactional public void createTestPayment(){ userName = "customer1"; OrderPayment paymentInfo = paymentInfoService.create(); Customer customer = customerService.readCustomerByUsername(userName); List<CustomerAddress> addresses = customerAddressDao.readActiveCustomerAddressesByCustomerId(customer.getId()); Address address = null; if (!addresses.isEmpty()) address = addresses.get(0).getAddress(); Order salesOrder = orderService.findCartForCustomer(customer); paymentInfo.setBillingAddress(address); paymentInfo.setOrder(salesOrder); paymentInfo.setType(PaymentType.CREDIT_CARD); assert paymentInfo != null; paymentInfo = paymentInfoService.save(paymentInfo); assert paymentInfo.getId() != null; Long paymentInfoId = paymentInfo.getId(); paymentInfoService.delete(paymentInfo); paymentInfo = paymentInfoService.readPaymentById(paymentInfoId); assert paymentInfo == null; }
@Override public ReconstructCartResponse reconstructCart(Customer customer, boolean priceOrder) throws PricingException { ReconstructCartResponse reconstructCartResponse = new ReconstructCartResponse(); Order customerCart = orderService.findCartForCustomer(customer); if (customerCart != null) { List<OrderItem> itemsToRemove = new ArrayList<OrderItem>();
@Transactional @RequestMapping(value = "/merge", method = RequestMethod.POST) @ApiOperation( value = "Merge carts", notes = "Merges anonymous cart with a logged in customer's cart", response = Void.class ) @ApiResponses(value = { @ApiResponse(code = 200, message = "Carts have been successfully merged", response = Void.class) }) public void mergeWithAnonymous( @ApiIgnore @AuthenticationPrincipal final CustomerUserDetails userDetails, @RequestBody final String anonymousToken) throws RemoveFromCartException, PricingException { final Customer loggedUser = customerService.readCustomerById(userDetails.getId()); final CustomerUserDetails anonymousUserDetails = (CustomerUserDetails) tokenServices.loadAuthentication (anonymousToken).getPrincipal(); final Customer anonymousUser = customerService.readCustomerById(anonymousUserDetails.getId()); final Order anonymousCart = orderService.findCartForCustomer(anonymousUser); mergeCartService.mergeCart(loggedUser, anonymousCart); }