Skip to content

Commit 19fab2b

Browse files
author
Robert He
committed
MAGETWO-55682: Backport ticket https://jira.corp.magento.com/browse/MAGETWO-55514 to 2.0.11
- backport changes and prevent BiC
1 parent 6ee6105 commit 19fab2b

File tree

8 files changed

+508
-0
lines changed

8 files changed

+508
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Catalog\Model\Indexer\Category;
8+
9+
/**
10+
* Class AffectCache
11+
* @deprecated
12+
*/
13+
class AffectCache
14+
{
15+
/**
16+
* @var \Magento\Framework\Indexer\CacheContext
17+
*/
18+
protected $context;
19+
20+
/**
21+
* @param \Magento\Framework\Indexer\CacheContext $context
22+
*/
23+
public function __construct(
24+
\Magento\Framework\Indexer\CacheContext $context
25+
) {
26+
$this->context = $context;
27+
}
28+
29+
/**
30+
* @param \Magento\Framework\Indexer\ActionInterface $subject
31+
* @param array $ids
32+
* @return array
33+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
34+
*/
35+
public function beforeExecute(\Magento\Framework\Indexer\ActionInterface $subject, $ids)
36+
{
37+
$this->context->registerEntities(\Magento\Catalog\Model\Category::CACHE_TAG, $ids);
38+
return [$ids];
39+
}
40+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Catalog\Model\Indexer\Product;
8+
9+
/**
10+
* Class AffectCache
11+
* @deprecated
12+
*/
13+
class AffectCache
14+
{
15+
/**
16+
* @var \Magento\Framework\Indexer\CacheContext $context
17+
*/
18+
protected $context;
19+
20+
/**
21+
* @param \Magento\Framework\Indexer\CacheContext $context
22+
*/
23+
public function __construct(
24+
\Magento\Framework\Indexer\CacheContext $context
25+
) {
26+
$this->context = $context;
27+
}
28+
29+
/**
30+
* @param \Magento\Framework\Indexer\ActionInterface $subject
31+
* @param array $ids
32+
* @return array
33+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
34+
*/
35+
public function beforeExecute(\Magento\Framework\Indexer\ActionInterface $subject, $ids)
36+
{
37+
$this->context->registerEntities(\Magento\Catalog\Model\Product::CACHE_TAG, $ids);
38+
return [$ids];
39+
}
40+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
// @codingStandardsIgnoreFile
8+
9+
namespace Magento\Catalog\Test\Unit\Model\Indexer\Category;
10+
11+
/**
12+
* Class AffectCacheTest
13+
* @deprecated
14+
*/
15+
class AffectCacheTest extends \PHPUnit_Framework_TestCase
16+
{
17+
/**
18+
* @var \Magento\Catalog\Model\Indexer\Category\AffectCache
19+
*/
20+
protected $plugin;
21+
22+
/**
23+
* @var \Magento\Framework\Indexer\CacheContext|\PHPUnit_Framework_MockObject_MockObject
24+
*/
25+
protected $contextMock;
26+
27+
/**
28+
* @var \Magento\Framework\Indexer\ActionInterface|\PHPUnit_Framework_MockObject_MockObject
29+
*/
30+
protected $subjectMock;
31+
32+
/**
33+
* Set up
34+
*/
35+
public function setUp()
36+
{
37+
$this->subjectMock = $this->getMockForAbstractClass('Magento\Framework\Indexer\ActionInterface',
38+
[], '', false, true, true, []);
39+
$this->contextMock = $this->getMock('Magento\Framework\Indexer\CacheContext',
40+
[], [], '', false);
41+
$this->plugin = new \Magento\Catalog\Model\Indexer\Category\AffectCache($this->contextMock);
42+
}
43+
44+
/**
45+
* test beforeExecute
46+
*/
47+
public function testBeforeExecute()
48+
{
49+
$expectedIds = [5, 6, 7];
50+
$this->contextMock->expects($this->once())
51+
->method('registerEntities')
52+
->with($this->equalTo(\Magento\Catalog\Model\Category::ENTITY),
53+
$this->equalTo($expectedIds))
54+
->will($this->returnValue($this->contextMock));
55+
$actualIds = $this->plugin->beforeExecute($this->subjectMock, $expectedIds);
56+
$this->assertEquals([$expectedIds], $actualIds);
57+
}
58+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
// @codingStandardsIgnoreFile
8+
9+
namespace Magento\Catalog\Test\Unit\Model\Indexer\Product;
10+
11+
/**
12+
* Class AffectCacheTest
13+
* @deprecated
14+
*/
15+
class AffectCacheTest extends \PHPUnit_Framework_TestCase
16+
{
17+
/**
18+
* @var \Magento\PageCache\Model\Indexer\Product\RefreshPlugin
19+
*/
20+
protected $plugin;
21+
22+
/**
23+
* @var \Magento\Framework\Indexer\CacheContext|\PHPUnit_Framework_MockObject_MockObject
24+
*/
25+
protected $contextMock;
26+
27+
/**
28+
* @var \Magento\Framework\Indexer\ActionInterface|\PHPUnit_Framework_MockObject_MockObject
29+
*/
30+
protected $subjectMock;
31+
32+
/**
33+
* Set up
34+
*/
35+
public function setUp()
36+
{
37+
$this->subjectMock = $this->getMockForAbstractClass('Magento\Framework\Indexer\ActionInterface',
38+
[], '', false, true, true, []);
39+
$this->contextMock = $this->getMock('Magento\Framework\Indexer\CacheContext',
40+
[], [], '', false);
41+
$this->plugin = new \Magento\Catalog\Model\Indexer\Product\AffectCache($this->contextMock);
42+
}
43+
44+
/**
45+
* test beforeExecute
46+
*/
47+
public function testBeforeExecute()
48+
{
49+
$expectedIds = [1, 2, 3];
50+
$this->contextMock->expects($this->once())
51+
->method('registerEntities')
52+
->with($this->equalTo(\Magento\Catalog\Model\Product::ENTITY),
53+
$this->equalTo($expectedIds))
54+
->will($this->returnValue($this->contextMock));
55+
$actualIds = $this->plugin->beforeExecute($this->subjectMock, $expectedIds);
56+
$this->assertEquals([$expectedIds], $actualIds);
57+
}
58+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Indexer\Model\Processor;
8+
9+
/**
10+
* Class InvalidateCache
11+
* @deprecated
12+
*/
13+
class InvalidateCache
14+
{
15+
/**
16+
* @var \Magento\Framework\Indexer\CacheContext
17+
*/
18+
protected $context;
19+
20+
/**
21+
* @var \Magento\Framework\Event\Manager
22+
*/
23+
protected $eventManager;
24+
25+
/**
26+
* @var \Magento\Framework\Module\Manager
27+
*/
28+
protected $moduleManager;
29+
30+
/**
31+
* @param \Magento\Framework\Indexer\CacheContext $context
32+
* @param \Magento\Framework\Event\Manager $eventManager
33+
* @param \Magento\Framework\Module\Manager $moduleManager
34+
*/
35+
public function __construct(
36+
\Magento\Framework\Indexer\CacheContext $context,
37+
\Magento\Framework\Event\Manager $eventManager,
38+
\Magento\Framework\Module\Manager $moduleManager
39+
) {
40+
$this->context = $context;
41+
$this->eventManager = $eventManager;
42+
$this->moduleManager = $moduleManager;
43+
}
44+
45+
/**
46+
* Update indexer views
47+
*
48+
* @param \Magento\Indexer\Model\Processor $subject
49+
* @return void
50+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
51+
*/
52+
public function afterUpdateMview(\Magento\Indexer\Model\Processor $subject)
53+
{
54+
if ($this->moduleManager->isEnabled('Magento_PageCache')) {
55+
$this->eventManager->dispatch('clean_cache_after_reindex', ['object' => $this->context]);
56+
}
57+
}
58+
}
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Indexer\Test\Unit\Model\Processor;
8+
9+
/**
10+
* Class InvalidateCacheTest
11+
* @deprecated
12+
*/
13+
class InvalidateCacheTest extends \PHPUnit_Framework_TestCase
14+
{
15+
/**
16+
* Tested plugin
17+
*
18+
* @var \Magento\Indexer\Model\Processor\InvalidateCache
19+
*/
20+
protected $plugin;
21+
22+
/**
23+
* Mock for context
24+
*
25+
* @var \Magento\Framework\Indexer\CacheContext|\PHPUnit_Framework_MockObject_MockObject
26+
*/
27+
protected $contextMock;
28+
29+
/**
30+
* Subject mock
31+
*
32+
* @var \Magento\Framework\Indexer\ActionInterface|\PHPUnit_Framework_MockObject_MockObject
33+
*/
34+
protected $subjectMock;
35+
36+
/**
37+
* Event manager mock
38+
*
39+
* @var \Magento\Framework\Event\Manager|\PHPUnit_Framework_MockObject_MockObject
40+
*/
41+
protected $eventManagerMock;
42+
43+
/**
44+
* Module manager mock
45+
*
46+
* @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject
47+
*/
48+
protected $moduleManager;
49+
50+
/**
51+
* Set up
52+
*/
53+
public function setUp()
54+
{
55+
$this->subjectMock = $this->getMock('Magento\Indexer\Model\Processor', [], [], '', false);
56+
$this->contextMock = $this->getMock('Magento\Framework\Indexer\CacheContext', [], [], '', false);
57+
$this->eventManagerMock = $this->getMock('Magento\Framework\Event\Manager', [], [], '', false);
58+
$this->moduleManager = $this->getMock('Magento\Framework\Module\Manager', [], [], '', false);
59+
$this->plugin = new \Magento\Indexer\Model\Processor\InvalidateCache(
60+
$this->contextMock,
61+
$this->eventManagerMock,
62+
$this->moduleManager
63+
);
64+
}
65+
66+
/**
67+
* Test afterUpdateMview with enabled PageCache module
68+
*
69+
* @return void
70+
*/
71+
public function testAfterUpdateMviewPageCacheEnabled()
72+
{
73+
$this->moduleManager->expects($this->once())
74+
->method('isEnabled')
75+
->with($this->equalTo('Magento_PageCache'))
76+
->will($this->returnValue(true));
77+
$this->eventManagerMock->expects($this->once())
78+
->method('dispatch')
79+
->with(
80+
$this->equalTo('clean_cache_after_reindex'),
81+
$this->equalTo(['object' => $this->contextMock])
82+
);
83+
$this->plugin->afterUpdateMview($this->subjectMock);
84+
}
85+
86+
/**
87+
* Test afterUpdateMview with disabled PageCache module
88+
*
89+
* @return void
90+
*/
91+
public function testAfterUpdateMviewPageCacheDisabled()
92+
{
93+
$this->moduleManager->expects($this->once())
94+
->method('isEnabled')
95+
->with($this->equalTo('Magento_PageCache'))
96+
->will($this->returnValue(false));
97+
$this->eventManagerMock->expects($this->never())
98+
->method('dispatch');
99+
$this->plugin->afterUpdateMview($this->subjectMock);
100+
}
101+
}

0 commit comments

Comments
 (0)