public function testSaveStockItem()
 {
     $productId = 123;
     $stockItemData = ['some_key' => 'someValue'];
     $stockItemDo = $this->getMockBuilder('Magento\\CatalogInventory\\Service\\V1\\Data\\StockItem')->disableOriginalConstructor()->getMock();
     $stockItemDo->expects($this->any())->method('getProductId')->will($this->returnValue($productId));
     $stockItemDo->expects($this->once())->method('__toArray')->will($this->returnValue($stockItemData));
     $stockItemModel = $this->getMockBuilder('Magento\\CatalogInventory\\Model\\Stock\\Item')->disableOriginalConstructor()->getMock();
     $stockItemModel->expects($this->once())->method('setData')->with($stockItemData);
     $stockItemModel->expects($this->once())->method('save');
     $this->stockItemRegistry->expects($this->once())->method('retrieve')->with($productId)->will($this->returnValue($stockItemModel));
     $this->stockItemRegistry->expects($this->once())->method('erase')->with($productId)->will($this->returnValue($stockItemModel));
     $this->assertEquals($this->model, $this->model->saveStockItem($stockItemDo));
 }
Пример #2
0
 /**
  * Prepare stock item data for save
  *
  * @param \Magento\Catalog\Model\Product $product
  * @return $this
  */
 protected function saveStockItemData($product)
 {
     $stockItemData = $product->getStockData();
     $stockItemData['product_id'] = $product->getId();
     /**
      * @todo Should be refactored together with \Magento\CatalogInventory\Model\Stock\Item::getStockId
      */
     $stockItemData['stock_id'] = \Magento\CatalogInventory\Model\Stock\Item::DEFAULT_STOCK_ID;
     foreach ($this->paramListToCheck as $dataKey => $configPath) {
         if (null !== $product->getData($configPath['item']) && null === $product->getData($configPath['config'])) {
             $stockItemData[$dataKey] = false;
         }
     }
     $originalQty = $product->getData('stock_data/original_inventory_qty');
     if (strlen($originalQty) > 0) {
         $stockItemData['qty_correction'] = $stockItemData['qty'] - $originalQty;
     }
     $stockItemDo = $this->stockItemService->getStockItem($product->getId());
     $this->stockItemService->saveStockItem($this->stockItemBuilder->mergeDataObjectWithArray($stockItemDo, $stockItemData));
     return $this;
 }