Skip to content

Commit ce095d5

Browse files
committed
Merge remote-tracking branch 'origin/AC-9569' into spartans_pr_15042024
2 parents 03a5260 + e342015 commit ce095d5

File tree

2 files changed

+56
-3
lines changed

2 files changed

+56
-3
lines changed

app/code/Magento/ImportExport/Plugin/DeferCacheCleaningUntilImportIsComplete.php

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,45 @@
77

88
namespace Magento\ImportExport\Plugin;
99

10+
use Magento\Framework\App\Cache\TypeListInterface;
11+
use Magento\Framework\App\RequestInterface;
1012
use Magento\Framework\Indexer\DeferredCacheCleanerInterface;
1113
use Magento\ImportExport\Model\Import;
1214

1315
class DeferCacheCleaningUntilImportIsComplete
1416
{
17+
private const BEHAVIOR_ADD_UPDATE = 'add_update';
18+
private const ENTITY_CUSTOMER = 'customer';
19+
private const CACHE_TYPE_GRAPHQL_QUERY_RESOLVER_RESULT = 'graphql_query_resolver_result';
20+
1521
/**
1622
* @var DeferredCacheCleanerInterface
1723
*/
1824
private $cacheCleaner;
1925

26+
/**
27+
* @var TypeListInterface
28+
*/
29+
private $cacheTypeList;
30+
31+
/**
32+
* @var RequestInterface
33+
*/
34+
private $request;
35+
2036
/**
2137
* @param DeferredCacheCleanerInterface $cacheCleaner
38+
* @param TypeListInterface $cacheTypeList
39+
* @param RequestInterface $request
2240
*/
23-
public function __construct(DeferredCacheCleanerInterface $cacheCleaner)
24-
{
41+
public function __construct(
42+
DeferredCacheCleanerInterface $cacheCleaner,
43+
TypeListInterface $cacheTypeList,
44+
RequestInterface $request
45+
) {
2546
$this->cacheCleaner = $cacheCleaner;
47+
$this->cacheTypeList = $cacheTypeList;
48+
$this->request = $request;
2649
}
2750

2851
/**
@@ -47,6 +70,13 @@ public function beforeImportSource(Import $subject): void
4770
*/
4871
public function afterImportSource(Import $subject, bool $result): bool
4972
{
73+
$behavior = $this->request->getParam('behavior');
74+
$entity = $this->request->getParam('entity');
75+
76+
if ($behavior === self::BEHAVIOR_ADD_UPDATE &&
77+
$entity === self::ENTITY_CUSTOMER) {
78+
$this->cacheTypeList->cleanType(self::CACHE_TYPE_GRAPHQL_QUERY_RESOLVER_RESULT);
79+
}
5080
$this->cacheCleaner->flush();
5181
return $result;
5282
}

app/code/Magento/ImportExport/Test/Unit/Plugin/DeferCacheCleaningUntilImportIsCompleteTest.php

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
namespace Magento\ImportExport\Test\Unit\Plugin;
99

10+
use Magento\Framework\App\Cache\TypeListInterface;
11+
use Magento\Framework\App\RequestInterface;
1012
use Magento\Framework\Indexer\DeferredCacheCleanerInterface;
1113
use Magento\ImportExport\Model\Import;
1214
use Magento\ImportExport\Plugin\DeferCacheCleaningUntilImportIsComplete;
@@ -25,14 +27,30 @@ class DeferCacheCleaningUntilImportIsCompleteTest extends TestCase
2527
*/
2628
private $cacheCleaner;
2729

30+
/**
31+
* @var TypeListInterface|MockObject
32+
*/
33+
private $cacheTypeList;
34+
35+
/**
36+
* @var RequestInterface|MockObject
37+
*/
38+
private $request;
39+
2840
/**
2941
* @inheritdoc
3042
*/
3143
protected function setUp(): void
3244
{
3345
parent::setUp();
3446
$this->cacheCleaner = $this->getMockForAbstractClass(DeferredCacheCleanerInterface::class);
35-
$this->plugin = new DeferCacheCleaningUntilImportIsComplete($this->cacheCleaner);
47+
$this->cacheTypeList = $this->getMockForAbstractClass(TypeListInterface::class);
48+
$this->request = $this->createMock(RequestInterface::class);
49+
$this->plugin = new DeferCacheCleaningUntilImportIsComplete(
50+
$this->cacheCleaner,
51+
$this->cacheTypeList,
52+
$this->request
53+
);
3654
}
3755

3856
/**
@@ -52,6 +70,11 @@ public function testAfterMethod()
5270
{
5371
$this->cacheCleaner->expects($this->once())->method('flush');
5472
$subject = $this->createMock(Import::class);
73+
// Assuming 'behavior' and 'entity' are the parameter names
74+
$this->request->expects($this->any())->method('getParam')->willReturnMap([
75+
['behavior', null, 'add_update'],
76+
['entity', null, 'customer'],
77+
]);
5578
$result = $this->plugin->afterImportSource($subject, true);
5679
$this->assertTrue($result);
5780
}

0 commit comments

Comments
 (0)