Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SpecialPriceIndexerTest.php
Go to the documentation of this file.
1 <?php
7 
13 use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
15 
16 class SpecialPriceIndexerTest extends \PHPUnit\Framework\TestCase
17 {
21  private $productRepository;
22 
26  private $productCollectionFactory;
27 
31  private $indexerProcessor;
32 
33  protected function setUp()
34  {
35  $this->productRepository = Bootstrap::getObjectManager()->get(ProductRepositoryInterface::class);
36  $this->productCollectionFactory = Bootstrap::getObjectManager()->get(CollectionFactory::class);
37  $this->indexerProcessor = Bootstrap::getObjectManager()->get(Processor::class);
38  }
39 
48  public function testFullReindexIfChildHasSpecialPrice()
49  {
50  $specialPrice = 2;
52  $childProduct = $this->productRepository->get('simple_10', true);
53  $childProduct->setData('special_price', $specialPrice);
54  $this->productRepository->save($childProduct);
55 
57  $collection = $this->productCollectionFactory->create();
59  ->addPriceData()
60  ->addFieldToFilter(ProductInterface::SKU, 'configurable');
61 
63  $items = array_values($collection->getItems());
64  self::assertEquals(10, $items[0]->getData('min_price'));
65 
66  $this->indexerProcessor->reindexAll();
67 
69  $collection = $this->productCollectionFactory->create();
71  ->addPriceData()
72  ->addFieldToFilter(ProductInterface::SKU, 'configurable');
73 
75  $item = $collection->getFirstItem();
76  self::assertEquals($specialPrice, $item->getData('min_price'));
77  }
78 
85  public function testOnSaveIndexationIfChildHasSpecialPrice()
86  {
87  $specialPrice = 2;
89  $childProduct = $this->productRepository->get('simple_10', true);
90  $childProduct->setData('special_price', $specialPrice);
91  $this->productRepository->save($childProduct);
92 
94  $collection = $this->productCollectionFactory->create();
96  ->addPriceData()
97  ->addFieldToFilter(ProductInterface::SKU, 'configurable');
98 
100  $item = $collection->getFirstItem();
101  self::assertEquals($specialPrice, $item->getData('min_price'));
102  }
103 }
$items