Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SpecialPriceIndexerWithDimensionTest.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
15 use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
17 
23 class SpecialPriceIndexerWithDimensionTest extends \PHPUnit\Framework\TestCase
24 {
28  private $productRepository;
29 
33  private $productCollectionFactory;
34 
38  private $indexerProcessor;
39 
43  protected function setUp()
44  {
45  $this->productRepository = Bootstrap::getObjectManager()->get(ProductRepositoryInterface::class);
46  $this->productCollectionFactory = Bootstrap::getObjectManager()->get(CollectionFactory::class);
47  $this->indexerProcessor = Bootstrap::getObjectManager()->get(Processor::class);
48  }
49 
57  public function testFullReindexIfChildHasSpecialPrice()
58  {
59  $specialPrice = 2;
61  $childProduct = $this->productRepository->get('simple_10', true);
62  $childProduct->setData('special_price', $specialPrice);
63  $this->productRepository->save($childProduct);
64 
66  $collection = $this->productCollectionFactory->create();
68  ->addPriceData()
69  ->addFieldToFilter(ProductInterface::SKU, 'configurable');
70 
72  $items = array_values($collection->getItems());
73  self::assertEquals(10, $items[0]->getData('min_price'));
74 
75  $this->indexerProcessor->reindexAll();
76 
78  $collection = $this->productCollectionFactory->create();
80  ->addPriceData()
81  ->addFieldToFilter(ProductInterface::SKU, 'configurable');
82 
84  $item = $collection->getFirstItem();
85  self::assertEquals($specialPrice, $item->getData('min_price'));
86  }
87 
94  public function testOnSaveIndexationIfChildHasSpecialPrice()
95  {
96  $specialPrice = 2;
98  $childProduct = $this->productRepository->get('simple_10', true);
99  $childProduct->setData('special_price', $specialPrice);
100  $this->productRepository->save($childProduct);
101 
103  $collection = $this->productCollectionFactory->create();
105  ->addPriceData()
106  ->addFieldToFilter(ProductInterface::SKU, 'configurable');
107 
109  $item = $collection->getFirstItem();
110  self::assertEquals($specialPrice, $item->getData('min_price'));
111  }
112 }
$items