21 private $storeManagerMock;
26 private $ruleProductsSelectBuilderMock;
31 private $productPriceCalculatorMock;
36 private $dateTimeMock;
41 private $pricesPersistorMock;
45 $this->storeManagerMock = $this->getMockBuilder(\
Magento\
Store\Model\StoreManagerInterface::class)
46 ->disableOriginalConstructor()
48 $this->ruleProductsSelectBuilderMock =
49 $this->getMockBuilder(\
Magento\CatalogRule\Model\Indexer\RuleProductsSelectBuilder::class)
50 ->disableOriginalConstructor()
52 $this->productPriceCalculatorMock =
53 $this->getMockBuilder(\
Magento\CatalogRule\Model\Indexer\ProductPriceCalculator::class)
54 ->disableOriginalConstructor()
56 $this->dateTimeMock = $this->getMockBuilder(\
Magento\Framework\Stdlib\DateTime\DateTime::class)
57 ->disableOriginalConstructor()
59 $this->pricesPersistorMock =
60 $this->getMockBuilder(\
Magento\CatalogRule\Model\Indexer\RuleProductPricesPersistor::class)
61 ->disableOriginalConstructor()
63 $this->model = new \Magento\CatalogRule\Model\Indexer\ReindexRuleProductPrice(
64 $this->storeManagerMock,
65 $this->ruleProductsSelectBuilderMock,
66 $this->productPriceCalculatorMock,
68 $this->pricesPersistorMock
75 $productMock = $this->getMockBuilder(\
Magento\Catalog\Model\Product::class)
76 ->disableOriginalConstructor()
79 $websiteMock = $this->getMockBuilder(\
Magento\
Store\Api\Data\WebsiteInterface::class)
80 ->disableOriginalConstructor()
82 $websiteMock->expects($this->once())->method(
'getId')->willReturn(
$websiteId);
83 $this->storeManagerMock->expects($this->once())->method(
'getWebsites')->willReturn([$websiteMock]);
85 $statementMock = $this->getMockBuilder(\Zend_Db_Statement_Interface::class)
86 ->disableOriginalConstructor()
88 $this->ruleProductsSelectBuilderMock->expects($this->once())
91 ->willReturn($statementMock);
96 'customer_group_id' => 2,
97 'from_time' => mktime(0, 0, 0, date(
'm'), date(
'd') - 100),
98 'to_time' => mktime(0, 0, 0, date(
'm'), date(
'd') + 100),
102 $this->dateTimeMock->expects($this->at(0))
104 ->with(
'Y-m-d 00:00:00',
$ruleData[
'from_time'])
106 $this->dateTimeMock->expects($this->at(1))
107 ->method(
'timestamp')
111 $this->dateTimeMock->expects($this->at(2))
113 ->with(
'Y-m-d 00:00:00',
$ruleData[
'to_time'])
115 $this->dateTimeMock->expects($this->at(3))
116 ->method(
'timestamp')
120 $statementMock->expects($this->at(0))->method(
'fetch')->willReturn(
$ruleData);
121 $statementMock->expects($this->at(1))->method(
'fetch')->willReturn(
false);
123 $this->productPriceCalculatorMock->expects($this->atLeastOnce())->method(
'calculate');
124 $this->pricesPersistorMock->expects($this->once())->method(
'execute');
126 $this->assertTrue($this->model->execute(1, $productMock,
true));