function it_does_not_add_violation_if_total_quantity_of_cart_items_do_not_exceed_available_quantity(ExecutionContextInterface $executionContext, AvailabilityCheckerInterface $availabilityChecker, AddToCartCommandInterface $addCartItemCommand, OrderInterface $order, OrderItemInterface $orderItem, OrderItemInterface $existingOrderItem, ProductVariantInterface $productVariant) { $addCartItemCommand->getCart()->willReturn($order); $addCartItemCommand->getCartItem()->willReturn($orderItem); $orderItem->getVariant()->willReturn($productVariant); $orderItem->getQuantity()->willReturn(10); $existingOrderItem->equals($orderItem)->willReturn(true); $order->getItems()->willReturn([$existingOrderItem]); $existingOrderItem->getQuantity()->willReturn(10); $availabilityChecker->isStockSufficient($productVariant, 20)->willReturn(true); $executionContext->addViolation(Argument::any(), Argument::any())->shouldNotBeCalled(); $cartItemAvailabilityConstraint = new CartItemAvailability(); $cartItemAvailabilityConstraint->message = 'Insufficient stock'; $this->validate($addCartItemCommand, $cartItemAvailabilityConstraint); }