Skip to content

Commit 42330c5

Browse files
committed
Merge branch 'ACP2E-1973' of https://github.com/magento-l3/magento2ce into PR-07032023
2 parents 805e444 + 7ac2a39 commit 42330c5

File tree

2 files changed

+110
-5
lines changed

2 files changed

+110
-5
lines changed

app/etc/di.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1820,11 +1820,6 @@
18201820
</argument>
18211821
</arguments>
18221822
</type>
1823-
<type name="Magento\Framework\Cache\LockGuardedCacheLoader">
1824-
<arguments>
1825-
<argument name="locker" xsi:type="object">Magento\Framework\Lock\Backend\Database</argument>
1826-
</arguments>
1827-
</type>
18281823
<type name="Magento\Framework\Cache\CompositeStaleCacheNotifier">
18291824
<arguments>
18301825
<argument name="notifiers" xsi:type="array">
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Framework\Cache;
9+
10+
use Magento\Framework\Lock\Backend\Database;
11+
use Magento\Framework\ObjectManagerInterface;
12+
use Magento\TestFramework\Helper\Bootstrap;
13+
14+
class LockGuardedCacheLoaderTest extends \PHPUnit\Framework\TestCase
15+
{
16+
/**
17+
* @var ObjectManagerInterface
18+
*/
19+
private ObjectManagerInterface $om;
20+
21+
/**
22+
* @var LockGuardedCacheLoader|null
23+
*/
24+
private ?LockGuardedCacheLoader $lockGuardedCacheLoader;
25+
26+
/**
27+
* @param string|null $name
28+
* @param array $data
29+
* @param $dataName
30+
*/
31+
public function __construct(?string $name = null, array $data = [], $dataName = '')
32+
{
33+
$this->om = Bootstrap::getObjectManager();
34+
35+
parent::__construct($name, $data, $dataName);
36+
}
37+
38+
protected function setUp(): void
39+
{
40+
$this->lockGuardedCacheLoader = $this->om
41+
->create(
42+
LockGuardedCacheLoader::class,
43+
[
44+
'locker' => $this->om->get(Database::class)
45+
]
46+
);
47+
}
48+
49+
/**
50+
* @dataProvider dataProviderLockGuardedCacheLoader
51+
*
52+
* @param $lockName
53+
* @param $dataLoader
54+
* @param $dataCollector
55+
* @param $dataSaver
56+
* @param $expected
57+
* @return void
58+
*/
59+
public function testLockedLoadData(
60+
$lockName,
61+
$dataLoader,
62+
$dataCollector,
63+
$dataSaver,
64+
$expected
65+
) {
66+
$result = $this->lockGuardedCacheLoader->lockedLoadData(
67+
$lockName,
68+
$dataLoader,
69+
$dataCollector,
70+
$dataSaver
71+
);
72+
73+
$this->assertEquals($expected, $result);
74+
}
75+
76+
/**
77+
* @return array[]
78+
*/
79+
public function dataProviderLockGuardedCacheLoader(): array
80+
{
81+
return [
82+
'Data loader read' => [
83+
'lockName',
84+
function () {
85+
return ['data1', 'data2'];
86+
},
87+
function () {
88+
return ['data3', 'data4'];
89+
},
90+
function () {
91+
return new \stdClass();
92+
},
93+
['data1', 'data2'],
94+
],
95+
'Data collector read' => [
96+
'lockName',
97+
function () {
98+
return false;
99+
},
100+
function () {
101+
return ['data3', 'data4'];
102+
},
103+
function () {
104+
return new \stdClass();
105+
},
106+
['data3', 'data4'],
107+
],
108+
];
109+
}
110+
}

0 commit comments

Comments
 (0)