Skip to content

Commit 3817826

Browse files
MAGETWO-65388: Indexation process in non-locking way for stock indexer
1 parent c6ac955 commit 3817826

File tree

23 files changed

+433
-13
lines changed

23 files changed

+433
-13
lines changed

app/code/Magento/Bundle/Model/ResourceModel/Indexer/Stock.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
class Stock extends \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\DefaultStock
1616
{
1717
/**
18-
* @var \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource
18+
* @var \Magento\Indexer\Model\ResourceModel\FrontendResource
1919
*/
2020
private $indexerStockFrontendResource;
2121

app/code/Magento/Bundle/Model/ResourceModel/Selection/Collection.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
4444
private $websiteScopePriceJoined = false;
4545

4646
/**
47-
* @var \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource
47+
* @var \Magento\Indexer\Model\ResourceModel\FrontendResource
4848
*/
4949
private $indexerStockFrontendResource;
5050

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Bundle\Test\Unit\Model\ResourceModel\Selection;
7+
8+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
9+
use Magento\Indexer\Model\ResourceModel\FrontendResource;
10+
use Magento\Store\Model\StoreManagerInterface;
11+
use Magento\Store\Api\Data\StoreInterface;
12+
use Magento\Framework\Validator\UniversalFactory;
13+
use Magento\Eav\Model\Entity\AbstractEntity;
14+
use Magento\Framework\DB\Adapter\AdapterInterface;
15+
use Magento\Framework\DB\Select;
16+
17+
/**
18+
* Class CollectionTest.
19+
* Unit test for \Magento\Indexer\Model\ResourceModel\FrontendResource.
20+
*/
21+
class CollectionTest extends \PHPUnit_Framework_TestCase
22+
{
23+
/**
24+
* @var \PHPUnit_Framework_MockObject_MockObject
25+
*/
26+
private $frontendResource;
27+
28+
/**
29+
* @var \PHPUnit_Framework_MockObject_MockObject
30+
*/
31+
private $storeManager;
32+
33+
/**
34+
* @var \PHPUnit_Framework_MockObject_MockObject
35+
*/
36+
private $store;
37+
38+
/**
39+
* @var \PHPUnit_Framework_MockObject_MockObject
40+
*/
41+
private $universalFactory;
42+
43+
/**
44+
* @var \PHPUnit_Framework_MockObject_MockObject
45+
*/
46+
private $entity;
47+
48+
/**
49+
* @var \PHPUnit_Framework_MockObject_MockObject
50+
*/
51+
private $adapter;
52+
53+
/**
54+
* @var \PHPUnit_Framework_MockObject_MockObject
55+
*/
56+
private $select;
57+
58+
/**
59+
* @var \Magento\Bundle\Model\ResourceModel\Selection\Collection
60+
*/
61+
private $model;
62+
63+
protected function setUp()
64+
{
65+
$objectManager = new ObjectManager($this);
66+
$this->frontendResource = $this->getMockBuilder(FrontendResource::class)
67+
->disableOriginalConstructor()
68+
->getMock();
69+
$this->storeManager = $this->getMockBuilder(StoreManagerInterface::class)
70+
->disableOriginalConstructor()
71+
->getMock();
72+
$this->store = $this->getMockBuilder(StoreInterface::class)
73+
->disableOriginalConstructor()
74+
->getMock();
75+
$this->universalFactory = $this->getMockBuilder(UniversalFactory::class)
76+
->disableOriginalConstructor()
77+
->getMock();
78+
$this->entity = $this->getMockBuilder(AbstractEntity::class)
79+
->disableOriginalConstructor()
80+
->getMock();
81+
$this->adapter = $this->getMockBuilder(AdapterInterface::class)
82+
->disableOriginalConstructor()
83+
->getMock();
84+
$this->select = $this->getMockBuilder(Select::class)
85+
->disableOriginalConstructor()
86+
->getMock();
87+
88+
$this->storeManager->expects($this->any())
89+
->method('getStore')
90+
->willReturn($this->store);
91+
$this->store->expects($this->any())
92+
->method('getId')
93+
->willReturn(1);
94+
$this->universalFactory->expects($this->any())
95+
->method('create')
96+
->willReturn($this->entity);
97+
$this->entity->expects($this->any())
98+
->method('getConnection')
99+
->willReturn($this->adapter);
100+
$this->entity->expects($this->any())
101+
->method('getDefaultAttributes')
102+
->willReturn([]);
103+
$this->adapter->expects($this->any())
104+
->method('select')
105+
->willReturn($this->select);
106+
107+
$this->model = $objectManager->getObject(
108+
\Magento\Bundle\Model\ResourceModel\Selection\Collection::class,
109+
[
110+
'storeManager' => $this->storeManager,
111+
'universalFactory' => $this->universalFactory,
112+
'indexerStockFrontendResource' => $this->frontendResource
113+
]
114+
);
115+
}
116+
117+
public function testAddQuantityFilter()
118+
{
119+
$tableName = 'cataloginventory_stock_status';
120+
$this->frontendResource->expects($this->once())
121+
->method('getMainTable')
122+
->willReturn($tableName);
123+
$this->select->expects($this->once())
124+
->method('joinInner')
125+
->with(['stock' => $tableName],
126+
'selection.product_id = stock.product_id',
127+
[])
128+
->willReturnSelf();
129+
$this->assertEquals($this->model, $this->model->addQuantityFilter());
130+
}
131+
}

app/code/Magento/Bundle/etc/di.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,9 @@
156156
<argument name="indexerStockFrontendResource" xsi:type="object">Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource</argument>
157157
</arguments>
158158
</type>
159+
<type name="Magento\Bundle\Model\ResourceModel\Indexer\Stock">
160+
<arguments>
161+
<argument name="indexerStockFrontendResource" xsi:type="object">Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource</argument>
162+
</arguments>
163+
</type>
159164
</config>

app/code/Magento/CatalogInventory/Model/Indexer/Stock/AbstractAction.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ abstract class AbstractAction
7171
private $cacheCleaner;
7272

7373
/**
74-
* @var \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource
74+
* @var \Magento\Indexer\Model\ResourceModel\FrontendResource
7575
*/
7676
private $indexerStockFrontendResource;
7777

app/code/Magento/CatalogInventory/Model/Indexer/Stock/CacheCleaner.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class CacheCleaner
4848
private $connection;
4949

5050
/**
51-
* @var \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource
51+
* @var \Magento\Indexer\Model\ResourceModel\FrontendResource
5252
*/
5353
private $indexerStockFrontendResource;
5454

app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/DefaultStock.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class DefaultStock extends AbstractIndexer implements StockInterface
5555
private $indexerStateFactory;
5656

5757
/**
58-
* @var \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource
58+
* @var \Magento\Indexer\Model\ResourceModel\FrontendResource
5959
*/
6060
private $indexerStockFrontendResource;
6161

app/code/Magento/CatalogInventory/Model/ResourceModel/Product/StockStatusBaseSelectProcessor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class StockStatusBaseSelectProcessor implements BaseSelectProcessorInterface
2323
private $resource;
2424

2525
/**
26-
* @var \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource
26+
* @var \Magento\Indexer\Model\ResourceModel\FrontendResource
2727
*/
2828
private $indexerStockFrontendResource;
2929

app/code/Magento/CatalogInventory/Model/ResourceModel/Stock/Item/StockItemCriteriaMapper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class StockItemCriteriaMapper extends GenericMapper
3535
private $storeManager;
3636

3737
/**
38-
* @var \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource
38+
* @var \Magento\Indexer\Model\ResourceModel\FrontendResource
3939
*/
4040
private $indexerStockFrontendResource;
4141

app/code/Magento/CatalogInventory/Model/ResourceModel/Stock/Status.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class Status extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
4141
private $stockConfiguration;
4242

4343
/**
44-
* @var \Magento\CatalogInventory\Model\ResourceModel\Indexer\Stock\FrontendResource
44+
* @var \Magento\Indexer\Model\ResourceModel\FrontendResource
4545
*/
4646
private $indexerStockFrontendResource;
4747

0 commit comments

Comments
 (0)