/** * @magentoDataFixture Magento/Catalog/_files/row_fixture.php * @magentoConfigFixture current_store catalog/frontend/flat_catalog_product 1 * @magentoAppArea frontend */ public function testProductUpdate() { $this->markTestSkipped('Incomplete due to MAGETWO-21369'); $categoryFactory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Model\\CategoryFactory'); $listProduct = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Catalog\\Block\\Product\\ListProduct'); $this->_processor->getIndexer()->setScheduled(false); $this->assertFalse($this->_processor->getIndexer()->isScheduled(), 'Indexer is in scheduled mode when turned to update on save mode'); $this->_processor->reindexAll(); $this->_product->load(1); $this->_product->setName('Updated Product'); $this->_product->save(); $category = $categoryFactory->create()->load(9); $layer = $listProduct->getLayer(); $layer->setCurrentCategory($category); /** @var \Magento\Catalog\Model\Resource\Product\Collection $productCollection */ $productCollection = $layer->getProductCollection(); $this->assertTrue($productCollection->isEnabledFlat(), 'Product collection is not using flat resource when flat is on'); $this->assertEquals(2, $productCollection->count(), 'Product collection items count must be exactly 2'); foreach ($productCollection as $product) { /** @var $product \Magento\Catalog\Model\Product */ if ($product->getId() == 1) { $this->assertEquals('Updated Product', $product->getName(), 'Product name from flat does not match with updated name'); } } }
/** * @magentoDbIsolation enabled * @magentoAppIsolation enabled * @magentoDataFixture Magento/Catalog/_files/price_row_fixture.php */ public function testProductUpdate() { $categoryFactory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('\\Magento\\Catalog\\Model\\CategoryFactory'); $listProduct = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('\\Magento\\Catalog\\Block\\Product\\ListProduct'); $this->_processor->getIndexer()->setScheduled(false); $this->assertFalse($this->_processor->getIndexer()->isScheduled()); $this->_product->load(1); $this->_product->setPrice(1); $this->_product->save(); $category = $categoryFactory->create()->load(9); $layer = $listProduct->getLayer(); $layer->setCurrentCategory($category); $productCollection = $layer->getProductCollection(); $this->assertEquals(1, $productCollection->count()); /** @var $product \Magento\Catalog\Model\Product */ foreach ($productCollection as $product) { $this->assertEquals($this->_product->getId(), $product->getId()); $this->assertEquals($this->_product->getPrice(), $product->getPrice()); } }
/** * */ public function testReindexRowAfterEdit() { $this->indexer->reindexAll(); $this->productApple->setData('name', 'Simple Product Cucumber'); $this->productApple->save(); $products = $this->search('Apple'); $this->assertCount(0, $products); $products = $this->search('Cucumber'); $this->assertCount(1, $products); $this->assertEquals($this->productApple->getId(), $products[0]->getId()); $products = $this->search('Simple Product'); $this->assertCount(5, $products); }
/** * @depends testReindexAll */ public function testReindexRowAfterEdit() { $this->productFirst->setData('name', 'Simple Product Third'); $this->productFirst->save(); $products = $this->search('Simple Product First'); $this->assertCount(0, $products); $products = $this->search('Simple Product Third'); $this->assertCount(1, $products); $this->assertEquals($this->productFirst->getId(), $products[0]->getId()); $products = $this->search('Simple Product'); $this->assertCount(2, $products); $this->assertEquals($this->productFirst->getId(), $products[0]->getId()); $this->assertEquals($this->productSecond->getId(), $products[1]->getId()); }
/** * */ public function testReindexRowAfterEdit() { $this->testReindexAll(); $this->productApple->setData('name', 'Simple Product Cucumber'); $this->productApple->save(); $products = $this->search('Apple'); $this->assertCount(0, $products); $products = $this->search('Cucumber'); $this->assertCount(1, $products); $this->assertEquals($this->productApple->getId(), $products[0]->getId()); $products = $this->search('Simple Product'); $this->assertCount(5, $products); $this->assertEquals($this->productApple->getId(), $products[0]->getId()); $this->assertEquals($this->productBanana->getId(), $products[1]->getId()); $this->assertEquals($this->productOrange->getId(), $products[2]->getId()); $this->assertEquals($this->productPapaya->getId(), $products[3]->getId()); $this->assertEquals($this->productCherry->getId(), $products[4]->getId()); }
/** * {@inheritdoc} */ public function save() { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'save'); if (!$pluginInfo) { return parent::save(); } else { return $this->___callPlugins('save', func_get_args(), $pluginInfo); } }
/** * Test for `save` method for duplicated product */ public function testSaveAndDuplicate() { $this->model->setIsDuplicate(true); $this->configureSaveTest(); $this->model->save(); }
/** * @param \Magento\Catalog\Model\Product $product * @param int|string $customerGroupId * @param int $qty * @param int $websiteId * @throws \Magento\Framework\Exception\NoSuchEntityException * @throws \Magento\Framework\Exception\CouldNotSaveException * @return void */ public function removeTierPrice(\Magento\Catalog\Model\Product $product, $customerGroupId, $qty, $websiteId) { $prices = $product->getData('tier_price'); // verify if price exist if (is_null($prices)) { throw new NoSuchEntityException("This product doesn't have tier price"); } $tierPricesQty = count($prices); foreach ($prices as $key => $tierPrice) { if ($customerGroupId == 'all' && $tierPrice['price_qty'] == $qty && $tierPrice['all_groups'] == 1 && intval($tierPrice['website_id']) === intval($websiteId)) { unset($prices[$key]); } elseif ($tierPrice['price_qty'] == $qty && $tierPrice['cust_group'] == $customerGroupId && intval($tierPrice['website_id']) === intval($websiteId)) { unset($prices[$key]); } } if ($tierPricesQty == count($prices)) { throw new NoSuchEntityException("Product hasn't group price with such data: customerGroupId = '{$customerGroupId}'," . "website = {$websiteId}, qty = {$qty}"); } $product->setData('tier_price', $prices); try { $product->save(); } catch (\Exception $exception) { throw new CouldNotSaveException("Invalid data provided for tier_price"); } }