Skip to content

Commit fef4884

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-71587' into 2.1-DEVELOP-PR
2 parents 0b7a568 + 3eeb1a9 commit fef4884

File tree

3 files changed

+90
-15
lines changed

3 files changed

+90
-15
lines changed

app/code/Magento/CatalogImportExport/Model/Import/Product.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2791,7 +2791,7 @@ private function formatBunchToStockDataRows(
27912791
$this->_connection->insertOnDuplicate($entityTable, array_values($stockData));
27922792
}
27932793

2794-
if ($productIdsToReindex && !$indexer->isScheduled()) {
2794+
if (!empty($productIdsToReindex) && !$indexer->isScheduled()) {
27952795
$indexer->reindexList($productIdsToReindex);
27962796
}
27972797
}

app/code/Magento/CatalogImportExport/Model/Indexer/Product/Flat/Plugin/Import.php

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,30 @@
55
*/
66
namespace Magento\CatalogImportExport\Model\Indexer\Product\Flat\Plugin;
77

8+
use Magento\Catalog\Model\Indexer\Product\Flat\State as FlatState;
9+
810
class Import
911
{
12+
/**
13+
* @var \Magento\Catalog\Model\Indexer\Product\Flat\State
14+
*/
15+
private $flatState;
16+
1017
/**
1118
* @var \Magento\Catalog\Model\Indexer\Product\Flat\Processor
1219
*/
1320
protected $_productFlatIndexerProcessor;
1421

1522
/**
1623
* @param \Magento\Catalog\Model\Indexer\Product\Flat\Processor $productFlatIndexerProcessor
24+
* @param \Magento\Catalog\Model\Indexer\Product\Flat\State $flatState
1725
*/
18-
public function __construct(\Magento\Catalog\Model\Indexer\Product\Flat\Processor $productFlatIndexerProcessor)
19-
{
26+
public function __construct(
27+
\Magento\Catalog\Model\Indexer\Product\Flat\Processor $productFlatIndexerProcessor,
28+
FlatState $flatState
29+
) {
2030
$this->_productFlatIndexerProcessor = $productFlatIndexerProcessor;
31+
$this->flatState = $flatState;
2132
}
2233

2334
/**
@@ -31,7 +42,10 @@ public function __construct(\Magento\Catalog\Model\Indexer\Product\Flat\Processo
3142
*/
3243
public function afterImportSource(\Magento\ImportExport\Model\Import $subject, $import)
3344
{
34-
$this->_productFlatIndexerProcessor->markIndexerAsInvalid();
45+
if ($this->flatState->isFlatEnabled() && !$this->_productFlatIndexerProcessor->isIndexerScheduled()) {
46+
$this->_productFlatIndexerProcessor->markIndexerAsInvalid();
47+
}
48+
3549
return $import;
3650
}
3751
}

app/code/Magento/CatalogImportExport/Test/Unit/Model/Indexer/Product/Flat/Plugin/ImportTest.php

Lines changed: 72 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,89 @@
55
*/
66
namespace Magento\CatalogImportExport\Test\Unit\Model\Indexer\Product\Flat\Plugin;
77

8+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
9+
810
class ImportTest extends \PHPUnit_Framework_TestCase
911
{
10-
public function testAfterImportSource()
12+
/**
13+
* @var \Magento\Catalog\Model\Indexer\Product\Flat\Processor|\PHPUnit_Framework_MockObject_MockObject
14+
*/
15+
private $processorMock;
16+
17+
/**
18+
* @var \Magento\CatalogImportExport\Model\Indexer\Product\Flat\Plugin\Import
19+
*/
20+
private $model;
21+
22+
/**
23+
* @var \Magento\Catalog\Model\Indexer\Product\Flat\State|\PHPUnit_Framework_MockObject_MockObject
24+
*/
25+
private $flatStateMock;
26+
27+
/**
28+
* @var \Magento\ImportExport\Model\Import|\PHPUnit_Framework_MockObject_MockObject
29+
*/
30+
private $subjectMock;
31+
32+
protected function setUp()
1133
{
12-
/**
13-
* @var \Magento\Catalog\Model\Indexer\Product\Flat\Processor|
14-
* \PHPUnit_Framework_MockObject_MockObject $processorMock
15-
*/
16-
$processorMock = $this->getMock(
34+
$this->processorMock = $this->getMock(
1735
'Magento\Catalog\Model\Indexer\Product\Flat\Processor',
18-
['markIndexerAsInvalid'],
36+
['markIndexerAsInvalid', 'isIndexerScheduled'],
37+
[],
38+
'',
39+
false
40+
);
41+
42+
$this->flatStateMock = $this->getMock(
43+
'\Magento\Catalog\Model\Indexer\Product\Flat\State',
44+
['isFlatEnabled'],
45+
[],
46+
'',
47+
false
48+
);
49+
50+
$this->subjectMock = $this->getMock(
51+
'Magento\ImportExport\Model\Import',
52+
[],
1953
[],
2054
'',
2155
false
2256
);
2357

24-
$subjectMock = $this->getMock('Magento\ImportExport\Model\Import', [], [], '', false);
25-
$processorMock->expects($this->once())->method('markIndexerAsInvalid');
58+
$this->model = (new ObjectManager($this))->getObject(
59+
'Magento\CatalogImportExport\Model\Indexer\Product\Flat\Plugin\Import',
60+
[
61+
'productFlatIndexerProcessor' => $this->processorMock,
62+
'flatState' => $this->flatStateMock
63+
]
64+
);
65+
}
2666

67+
public function testAfterImportSourceWithFlatEnabledAndIndexerScheduledDisabled()
68+
{
69+
$this->flatStateMock->expects($this->once())->method('isFlatEnabled')->willReturn(true);
70+
$this->processorMock->expects($this->once())->method('isIndexerScheduled')->willReturn(false);
71+
$this->processorMock->expects($this->once())->method('markIndexerAsInvalid');
2772
$someData = [1, 2, 3];
73+
$this->assertEquals($someData, $this->model->afterImportSource($this->subjectMock, $someData));
74+
}
2875

29-
$model = new \Magento\CatalogImportExport\Model\Indexer\Product\Flat\Plugin\Import($processorMock);
30-
$this->assertEquals($someData, $model->afterImportSource($subjectMock, $someData));
76+
public function testAfterImportSourceWithFlatDisabledAndIndexerScheduledDisabled()
77+
{
78+
79+
$this->flatStateMock->expects($this->once())->method('isFlatEnabled')->willReturn(false);
80+
$this->processorMock->expects($this->never())->method('isIndexerScheduled')->willReturn(false);
81+
$this->processorMock->expects($this->never())->method('markIndexerAsInvalid');
82+
$someData = [1, 2, 3];
83+
$this->assertEquals($someData, $this->model->afterImportSource($this->subjectMock, $someData));
84+
}
85+
public function testAfterImportSourceWithFlatEnabledAndIndexerScheduledEnabled()
86+
{
87+
$this->flatStateMock->expects($this->once())->method('isFlatEnabled')->willReturn(true);
88+
$this->processorMock->expects($this->once())->method('isIndexerScheduled')->willReturn(true);
89+
$this->processorMock->expects($this->never())->method('markIndexerAsInvalid');
90+
$someData = [1, 2, 3];
91+
$this->assertEquals($someData, $this->model->afterImportSource($this->subjectMock, $someData));
3192
}
3293
}

0 commit comments

Comments
 (0)