Skip to content

Commit 39dccc1

Browse files
ENGCOM-7017: Cleanup ObjectManager usage - Magento_CacheInvalidate #27084
- Merge Pull Request #27084 from Bartlomiejsz/magento2:feature/objectmanager_cleanup_cacheinvalidate - Merged commits: 1. dee7692
2 parents 45b624c + dee7692 commit 39dccc1

File tree

2 files changed

+94
-64
lines changed

2 files changed

+94
-64
lines changed

app/code/Magento/CacheInvalidate/Observer/InvalidateVarnishObserver.php

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,61 +3,76 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\CacheInvalidate\Observer;
79

10+
use Magento\CacheInvalidate\Model\PurgeCache;
11+
use Magento\Framework\App\Config\ScopeConfigInterface;
12+
use Magento\Framework\Event\Observer;
813
use Magento\Framework\Event\ObserverInterface;
14+
use Magento\Framework\App\Cache\Tag\Resolver;
15+
use Magento\PageCache\Model\Config;
916

17+
/**
18+
* Observer used to invalidate varnish cache once Magento cache was cleaned
19+
*/
1020
class InvalidateVarnishObserver implements ObserverInterface
1121
{
1222
/**
1323
* Application config object
1424
*
15-
* @var \Magento\Framework\App\Config\ScopeConfigInterface
25+
* @var ScopeConfigInterface
1626
*/
17-
protected $config;
27+
private $config;
1828

1929
/**
20-
* @var \Magento\CacheInvalidate\Model\PurgeCache
30+
* @var PurgeCache
2131
*/
22-
protected $purgeCache;
32+
private $purgeCache;
2333

2434
/**
2535
* Invalidation tags resolver
2636
*
27-
* @var \Magento\Framework\App\Cache\Tag\Resolver
37+
* @var Resolver
2838
*/
2939
private $tagResolver;
3040

3141
/**
32-
* @param \Magento\PageCache\Model\Config $config
33-
* @param \Magento\CacheInvalidate\Model\PurgeCache $purgeCache
42+
* @param Config $config
43+
* @param PurgeCache $purgeCache
44+
* @param Resolver $tagResolver
3445
*/
3546
public function __construct(
36-
\Magento\PageCache\Model\Config $config,
37-
\Magento\CacheInvalidate\Model\PurgeCache $purgeCache
47+
Config $config,
48+
PurgeCache $purgeCache,
49+
Resolver $tagResolver
3850
) {
3951
$this->config = $config;
4052
$this->purgeCache = $purgeCache;
53+
$this->tagResolver = $tagResolver;
4154
}
4255

4356
/**
44-
* If Varnish caching is enabled it collects array of tags
45-
* of incoming object and asks to clean cache.
57+
* If Varnish caching is enabled it collects array of tags of incoming object and asks to clean cache.
58+
*
59+
* @param Observer $observer
4660
*
47-
* @param \Magento\Framework\Event\Observer $observer
4861
* @return void
4962
*/
50-
public function execute(\Magento\Framework\Event\Observer $observer)
63+
public function execute(Observer $observer)
5164
{
5265
$object = $observer->getEvent()->getObject();
66+
5367
if (!is_object($object)) {
5468
return;
5569
}
56-
if ($this->config->getType() == \Magento\PageCache\Model\Config::VARNISH && $this->config->isEnabled()) {
57-
$bareTags = $this->getTagResolver()->getTags($object);
70+
71+
if ((int)$this->config->getType() === Config::VARNISH && $this->config->isEnabled()) {
72+
$bareTags = $this->tagResolver->getTags($object);
5873

5974
$tags = [];
60-
$pattern = "((^|,)%s(,|$))";
75+
$pattern = '((^|,)%s(,|$))';
6176
foreach ($bareTags as $tag) {
6277
$tags[] = sprintf($pattern, $tag);
6378
}
@@ -66,17 +81,4 @@ public function execute(\Magento\Framework\Event\Observer $observer)
6681
}
6782
}
6883
}
69-
70-
/**
71-
* @deprecated 100.1.2
72-
* @return \Magento\Framework\App\Cache\Tag\Resolver
73-
*/
74-
private function getTagResolver()
75-
{
76-
if ($this->tagResolver === null) {
77-
$this->tagResolver = \Magento\Framework\App\ObjectManager::getInstance()
78-
->get(\Magento\Framework\App\Cache\Tag\Resolver::class);
79-
}
80-
return $this->tagResolver;
81-
}
8284
}

app/code/Magento/CacheInvalidate/Test/Unit/Observer/InvalidateVarnishObserverTest.php

Lines changed: 63 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,77 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\CacheInvalidate\Test\Unit\Observer;
79

10+
use Magento\CacheInvalidate\Model\PurgeCache;
11+
use Magento\CacheInvalidate\Observer\InvalidateVarnishObserver;
12+
use Magento\Framework\App\Cache\Tag\Resolver;
13+
use Magento\Framework\Event;
14+
use Magento\Framework\Event\Observer;
815
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
16+
use Magento\PageCache\Model\Config;
17+
use Magento\Store\Model\Store;
18+
use PHPUnit\Framework\MockObject\MockObject;
19+
use PHPUnit\Framework\TestCase;
920

10-
class InvalidateVarnishObserverTest extends \PHPUnit\Framework\TestCase
21+
/**
22+
* Test class for \Magento\CacheInvalidate\Observer\InvalidateVarnishObserver
23+
*/
24+
class InvalidateVarnishObserverTest extends TestCase
1125
{
12-
/** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\CacheInvalidate\Observer\InvalidateVarnishObserver */
13-
protected $model;
26+
/**
27+
* @var InvalidateVarnishObserver
28+
*/
29+
private $model;
1430

15-
/** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Framework\Event\Observer */
16-
protected $observerMock;
31+
/**
32+
* @var Config|MockObject
33+
*/
34+
private $configMock;
1735

18-
/** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\PageCache\Model\Config */
19-
protected $configMock;
36+
/**
37+
* @var PurgeCache|MockObject
38+
*/
39+
private $purgeCacheMock;
2040

21-
/** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\CacheInvalidate\Model\PurgeCache */
22-
protected $purgeCache;
41+
/**
42+
* @var Resolver|MockObject
43+
*/
44+
private $tagResolverMock;
2345

24-
/** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Framework\DataObject\ */
25-
protected $observerObject;
46+
/**
47+
* @var Observer|MockObject
48+
*/
49+
private $observerMock;
2650

27-
/** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Framework\App\Cache\Tag\Resolver */
28-
private $tagResolver;
51+
/**
52+
* @var Store|MockObject
53+
*/
54+
private $observerObject;
2955

3056
/**
31-
* Set up all mocks and data for test
57+
* @inheritDoc
3258
*/
3359
protected function setUp()
3460
{
35-
$helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
36-
37-
$this->configMock = $this->createPartialMock(\Magento\PageCache\Model\Config::class, ['getType', 'isEnabled']);
38-
$this->purgeCache = $this->createMock(\Magento\CacheInvalidate\Model\PurgeCache::class);
39-
$this->model = new \Magento\CacheInvalidate\Observer\InvalidateVarnishObserver(
40-
$this->configMock,
41-
$this->purgeCache
42-
);
61+
$this->configMock = $this->createPartialMock(Config::class, ['getType', 'isEnabled']);
62+
$this->purgeCacheMock = $this->createMock(PurgeCache::class);
63+
$this->tagResolverMock = $this->createMock(Resolver::class);
4364

44-
$this->tagResolver = $this->createMock(\Magento\Framework\App\Cache\Tag\Resolver::class);
45-
$helper->setBackwardCompatibleProperty($this->model, 'tagResolver', $this->tagResolver);
65+
$this->observerMock = $this->createPartialMock(Observer::class, ['getEvent']);
66+
$this->observerObject = $this->createMock(Store::class);
4667

47-
$this->observerMock = $this->createPartialMock(\Magento\Framework\Event\Observer::class, ['getEvent']);
48-
$this->observerObject = $this->createMock(\Magento\Store\Model\Store::class);
68+
$objectManager = new ObjectManager($this);
69+
$this->model = $objectManager->getObject(
70+
InvalidateVarnishObserver::class,
71+
[
72+
'config' => $this->configMock,
73+
'purgeCache' => $this->purgeCacheMock,
74+
'tagResolver' => $this->tagResolverMock
75+
]
76+
);
4977
}
5078

5179
/**
@@ -56,21 +84,21 @@ public function testInvalidateVarnish()
5684
$tags = ['cache_1', 'cache_group'];
5785
$pattern = '((^|,)cache_1(,|$))|((^|,)cache_group(,|$))';
5886

59-
$this->configMock->expects($this->once())->method('isEnabled')->will($this->returnValue(true));
87+
$this->configMock->expects($this->once())->method('isEnabled')->willReturn(true);
6088
$this->configMock->expects(
6189
$this->once()
6290
)->method(
6391
'getType'
64-
)->will(
65-
$this->returnValue(\Magento\PageCache\Model\Config::VARNISH)
92+
)->willReturn(
93+
Config::VARNISH
6694
);
6795

68-
$eventMock = $this->createPartialMock(\Magento\Framework\Event::class, ['getObject']);
69-
$eventMock->expects($this->once())->method('getObject')->will($this->returnValue($this->observerObject));
70-
$this->observerMock->expects($this->once())->method('getEvent')->will($this->returnValue($eventMock));
71-
$this->tagResolver->expects($this->once())->method('getTags')->with($this->observerObject)
72-
->will($this->returnValue($tags));
73-
$this->purgeCache->expects($this->once())->method('sendPurgeRequest')->with($pattern);
96+
$eventMock = $this->createPartialMock(Event::class, ['getObject']);
97+
$eventMock->expects($this->once())->method('getObject')->willReturn($this->observerObject);
98+
$this->observerMock->expects($this->once())->method('getEvent')->willReturn($eventMock);
99+
$this->tagResolverMock->expects($this->once())->method('getTags')->with($this->observerObject)
100+
->willReturn($tags);
101+
$this->purgeCacheMock->expects($this->once())->method('sendPurgeRequest')->with($pattern);
74102

75103
$this->model->execute($this->observerMock);
76104
}

0 commit comments

Comments
 (0)