예제 #1
0
 /**
  *  Test reindex for configurable product with both disabled and enabled variations.
  */
 public function testReindexEntitiesForConfigurableProduct()
 {
     /** @var \Magento\Catalog\Model\Resource\Eav\Attribute $attr **/
     $attr = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\\Eav\\Model\\Config')->getAttribute('catalog_product', 'test_configurable');
     $attr->setIsFilterable(1)->save();
     $this->_eavIndexerProcessor->reindexAll();
     /** @var \Magento\Eav\Model\Resource\Entity\Attribute\Option\Collection $options **/
     $options = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Eav\\Model\\Resource\\Entity\\Attribute\\Option\\Collection');
     $options->setAttributeFilter($attr->getId())->load();
     $optionIds = $options->getAllIds();
     $adapter = $this->productResource->getReadConnection();
     $select = $adapter->select()->from($this->productResource->getTable('catalog_product_index_eav'))->where('entity_id = ?', 1)->where('attribute_id = ?', $attr->getId())->where('value IN (?)', $optionIds);
     $result = $adapter->fetchAll($select);
     $this->assertCount(2, $result);
     /** @var \Magento\Catalog\Model\Product $product1 **/
     $product1 = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\\Catalog\\Model\\Product');
     $product1 = $product1->load(10);
     $product1->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED)->save();
     /** @var \Magento\Catalog\Model\Product $product2 **/
     $product2 = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\\Catalog\\Model\\Product');
     $product2 = $product2->load(20);
     $product2->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED)->save();
     $result = $adapter->fetchAll($select);
     $this->assertCount(0, $result);
 }
예제 #2
0
 /**
  * @magentoDataFixture Magento/Catalog/_files/products_with_multiselect_attribute.php
  */
 public function testReindexMultiselectAttribute()
 {
     /** @var ProductRepositoryInterface $productRepository */
     $productRepository = Bootstrap::getObjectManager()->create(ProductRepositoryInterface::class);
     /** @var \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attr **/
     $attr = Bootstrap::getObjectManager()->get('Magento\\Eav\\Model\\Config')->getAttribute('catalog_product', 'multiselect_attribute');
     $attr->setIsFilterable(1)->save();
     /** @var $options \Magento\Eav\Model\ResourceModel\Entity\Attribute\Option\Collection */
     $options = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\\Eav\\Model\\ResourceModel\\Entity\\Attribute\\Option\\Collection');
     $options->setAttributeFilter($attr->getId());
     $optionIds = $options->getAllIds();
     $product1Id = $optionIds[0] * 10;
     $product2Id = $optionIds[1] * 10;
     /** @var \Magento\Catalog\Model\Product $product1 **/
     $product1 = $productRepository->getById($product1Id);
     $product1->setSpecialFromDate(date('Y-m-d H:i:s'));
     $product1->setNewsFromDate(date('Y-m-d H:i:s'));
     $productRepository->save($product1);
     /** @var \Magento\Catalog\Model\Product $product2 **/
     $product2 = $productRepository->getById($product2Id);
     $product1->setSpecialFromDate(date('Y-m-d H:i:s'));
     $product1->setNewsFromDate(date('Y-m-d H:i:s'));
     $productRepository->save($product2);
     $this->_eavIndexerProcessor->reindexAll();
     $connection = $this->productResource->getConnection();
     $select = $connection->select()->from($this->productResource->getTable('catalog_product_index_eav'))->where('entity_id in (?)', [$product1Id, $product2Id])->where('attribute_id = ?', $attr->getId());
     $result = $connection->fetchAll($select);
     $this->assertCount(3, $result);
 }
예제 #3
0
 /**
  * @magentoDbIsolation disabled
  * @magentoAppIsolation enabled
  * @magentoDataFixture Magento/Catalog/_files/product_simple.php
  */
 public function testReindexAll()
 {
     /** @var \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attr **/
     $attr = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\\Eav\\Model\\Config')->getAttribute('catalog_product', 'weight');
     $attr->setIsFilterable(1)->save();
     $this->assertTrue($attr->isIndexable());
     $this->_processor->reindexAll();
     $categoryFactory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\\Catalog\\Model\\CategoryFactory');
     /** @var \Magento\Catalog\Block\Product\ListProduct $listProduct */
     $listProduct = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\\Catalog\\Block\\Product\\ListProduct');
     $category = $categoryFactory->create()->load(2);
     $layer = $listProduct->getLayer();
     $layer->setCurrentCategory($category);
     $productCollection = $layer->getProductCollection();
     $productCollection->addAttributeToSelect('weight');
     $this->assertCount(1, $productCollection);
     /** @var $product \Magento\Catalog\Model\Product */
     foreach ($productCollection as $product) {
         $this->assertEquals('Simple Product', $product->getName());
         $this->assertEquals('Short description', $product->getShortDescription());
         $this->assertEquals(1, $product->getWeight());
     }
 }