/** * @magentoDbIsolation disabled * @magentoDataFixture Magento/Catalog/_files/product_simple.php */ public function testProductUpdate() { $categoryFactory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\CategoryFactory'); /** @var \Magento\Catalog\Block\Product\ListProduct $listProduct */ $listProduct = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Block\\Product\\ListProduct'); /** @var \Magento\Framework\Api\DataObjectHelper $dataObjectHelper */ $dataObjectHelper = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('\\Magento\\Framework\\Api\\DataObjectHelper'); /** @var \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry */ $stockRegistry = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\CatalogInventory\\Api\\StockRegistryInterface'); /** @var \Magento\CatalogInventory\Api\StockItemRepositoryInterface $stockItemRepository */ $stockItemRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\CatalogInventory\\Api\\StockItemRepositoryInterface'); /** @var \Magento\Catalog\Model\ProductRepository $productRepository */ $productRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\ProductRepository'); $product = $productRepository->get('simple'); $this->_processor->getIndexer()->setScheduled(false); $this->assertFalse($this->_processor->getIndexer()->isScheduled()); $stockItem = $stockRegistry->getStockItem($product->getId(), 1); $this->assertNotNull($stockItem->getItemId()); $stockItemData = ['qty' => $stockItem->getQty() + 11]; $dataObjectHelper->populateWithArray($stockItem, $stockItemData, '\\Magento\\CatalogInventory\\Api\\Data\\StockItemInterface'); $stockItemRepository->save($stockItem); $category = $categoryFactory->create()->load(2); $layer = $listProduct->getLayer(); $layer->setCurrentCategory($category); $productCollection = $layer->getProductCollection(); $productCollection->joinField('qty', 'cataloginventory_stock_status', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left'); $this->assertEquals(1, $productCollection->count()); /** @var $product \Magento\Catalog\Model\Product */ foreach ($productCollection as $product) { $this->assertEquals('Simple Product', $product->getName()); $this->assertEquals('Short description', $product->getShortDescription()); $this->assertEquals(111, $product->getQty()); } }
/** * @magentoDbIsolation enabled * @magentoAppIsolation enabled * @magentoDataFixture Magento/Catalog/_files/product_simple.php */ public function testProductUpdate() { $categoryFactory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('\\Magento\\Catalog\\Model\\CategoryFactory'); /** @var \Magento\Catalog\Block\Product\ListProduct $listProduct */ $listProduct = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('\\Magento\\Catalog\\Block\\Product\\ListProduct'); /** @var \Magento\CatalogInventory\Model\Stock\Item $stockItem */ $stockItem = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('\\Magento\\CatalogInventory\\Model\\Stock\\Item'); $this->_processor->getIndexer()->setScheduled(false); $this->assertFalse($this->_processor->getIndexer()->isScheduled()); $stockItem->loadByProduct(1); $stockItem->addQty(11); $stockItem->save(); $category = $categoryFactory->create()->load(2); $layer = $listProduct->getLayer(); $layer->setCurrentCategory($category); $productCollection = $layer->getProductCollection(); $productCollection->joinField('qty', 'cataloginventory_stock_status', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left'); $this->assertEquals(1, $productCollection->count()); /** @var $product \Magento\Catalog\Model\Product */ foreach ($productCollection as $product) { $this->assertEquals('Simple Product', $product->getName()); $this->assertEquals('Short description', $product->getShortDescription()); $this->assertEquals(111, $product->getQty()); } }