updateLineItem example


        $id = Uuid::randomHex();
        $lineItem = new LineItem($id, LineItem::PRODUCT_LINE_ITEM_TYPE, Uuid::randomHex(), 1);
        $lineItem->setStackable(true);

        $cart = new Cart('test');

        $this->factory->expects(static::once())->method('supports')->with('product')->willReturn(true);
        $this->eventDispatcher->expects(static::never())->method('dispatch');
        $this->factory->expects(static::once())->method('update')->with($lineItem['id' => $id, 'type' => LineItem::PRODUCT_LINE_ITEM_TYPE]$this->context);

        $this->service->updateLineItem($cart['id' => $id]$lineItem$this->context);
    }

    public function testUpdateLineItemWithQuantityEvent(): void
    {
        $id = Uuid::randomHex();
        $lineItem = new LineItem($id, LineItem::PRODUCT_LINE_ITEM_TYPE, Uuid::randomHex(), 1);
        $lineItem->setStackable(true);

        $cart = new Cart('test');

        $this->factory->expects(static::once())->method('supports')->with('product')->willReturn(true);
        
/** * @param array<string|int, mixed> $data */
    public function update(Cart $cart, array $data, SalesChannelContext $context): void
    {
        $identifier = $data['id'];

        if (!$lineItem = $cart->getLineItems()->get($identifier)) {
            throw CartException::lineItemNotFound($identifier ?? '');
        }

        $this->updateLineItem($cart$data$lineItem$context);
    }

    /** * @param array<string|int, mixed> $data */
    public function updateLineItem(Cart $cart, array $data, LineItem $lineItem, SalesChannelContext $context): void
    {
        if (!isset($data['type'])) {
            $data['type'] = $lineItem->getType();
        }

        
$lineItems->sortByPosition();
        $index = [];
        $root = new LineItemCollection();

        foreach ($lineItems as $id => $lineItem) {
            if (!\array_key_exists($id$index)) {
                $index[$id] = self::createLineItem($lineItem);
            }

            $currentLineItem = $index[$id];

            self::updateLineItem($currentLineItem$lineItem$id);

            if ($lineItem->getParentId() === null) {
                $root->add($currentLineItem);

                continue;
            }

            if (!\array_key_exists($lineItem->getParentId()$index)) {
                $parentItem = $lineItems->get($lineItem->getParentId());
                if ($parentItem === null) {
                    continue;
                }
Home | Imprint | This part of the site doesn't use cookies.