Skip to content

Commit 0e57319

Browse files
authored
FRW-9017 Added regeneration of oms process cache. (#11117)
FRW-9017 Added regeneration of oms process cache.
1 parent dc78a3b commit 0e57319

File tree

8 files changed

+36
-14
lines changed

8 files changed

+36
-14
lines changed

src/Spryker/Zed/Oms/Business/OmsFacade.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,15 @@ public function triggerEventForOneOrderItem($eventId, $orderItemId, array $data
155155
*
156156
* @api
157157
*
158+
* @param bool $regenerateCache
159+
*
158160
* @return array<\Spryker\Zed\Oms\Business\Process\ProcessInterface>
159161
*/
160-
public function getProcesses()
162+
public function getProcesses(bool $regenerateCache = false)
161163
{
162164
return $this->getFactory()
163165
->createOrderStateMachineFinder()
164-
->getProcesses();
166+
->getProcesses($regenerateCache);
165167
}
166168

167169
/**

src/Spryker/Zed/Oms/Business/OmsFacadeInterface.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,11 @@ public function triggerEventForOneOrderItem($eventId, $orderItemId, array $data
166166
*
167167
* @api
168168
*
169+
* @param bool $regenerateCache
170+
*
169171
* @return array<\Spryker\Zed\Oms\Business\Process\ProcessInterface>
170172
*/
171-
public function getProcesses();
173+
public function getProcesses(bool $regenerateCache = false);
172174

173175
/**
174176
* Specification:

src/Spryker/Zed/Oms/Business/OrderStateMachine/Builder.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,11 @@ public function __construct(
112112

113113
/**
114114
* @param string $processName
115+
* @param bool $regenerateCache
115116
*
116117
* @return \Spryker\Zed\Oms\Business\Process\ProcessInterface
117118
*/
118-
public function createProcess($processName)
119+
public function createProcess($processName, bool $regenerateCache = false): ProcessInterface
119120
{
120121
if (isset(static::$processBuffer[$processName])) {
121122
return static::$processBuffer[$processName];
@@ -135,7 +136,7 @@ public function createProcess($processName)
135136
$process = $this->processCacheReader->getProcess($processName);
136137
}
137138

138-
if (!$isProcessCached) {
139+
if (!$isProcessCached || $regenerateCache) {
139140
$process = $this->createMainProcess($processName);
140141
$this->processCacheWriter->cacheProcess($process, $processName);
141142
}

src/Spryker/Zed/Oms/Business/OrderStateMachine/BuilderInterface.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@
77

88
namespace Spryker\Zed\Oms\Business\OrderStateMachine;
99

10+
use Spryker\Zed\Oms\Business\Process\ProcessInterface;
11+
1012
interface BuilderInterface
1113
{
1214
/**
1315
* @param string $processName
16+
* @param bool $regenerateCache
1417
*
1518
* @return \Spryker\Zed\Oms\Business\Process\ProcessInterface
1619
*/
17-
public function createProcess($processName);
20+
public function createProcess($processName, bool $regenerateCache = false): ProcessInterface;
1821
}

src/Spryker/Zed/Oms/Business/OrderStateMachine/Finder.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -257,14 +257,16 @@ public function getItemsWithoutFlag(SpySalesOrder $order, $flag)
257257
}
258258

259259
/**
260+
* @param bool $regenerateCache
261+
*
260262
* @return array<\Spryker\Zed\Oms\Business\Process\ProcessInterface>
261263
*/
262-
public function getProcesses()
264+
public function getProcesses(bool $regenerateCache = false)
263265
{
264266
$processes = [];
265267
foreach ($this->activeProcesses as $processName) {
266268
$builder = clone $this->builder;
267-
$processes[$processName] = $builder->createProcess($processName);
269+
$processes[$processName] = $builder->createProcess($processName, $regenerateCache);
268270
}
269271

270272
return $processes;

src/Spryker/Zed/Oms/Business/OrderStateMachine/FinderInterface.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,11 @@ public function getItemsWithFlag(SpySalesOrder $order, $flag);
6161
public function getItemsWithoutFlag(SpySalesOrder $order, $flag);
6262

6363
/**
64+
* @param bool $regenerateCache
65+
*
6466
* @return array<\Spryker\Zed\Oms\Business\Process\ProcessInterface>
6567
*/
66-
public function getProcesses();
68+
public function getProcesses(bool $regenerateCache = false);
6769

6870
/**
6971
* @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem $orderItem

src/Spryker/Zed/Oms/Communication/Console/ProcessCacheWarmUpConsole.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ protected function configure(): void
4949
*/
5050
protected function execute(InputInterface $input, OutputInterface $output): int
5151
{
52-
$this->getFacade()->getProcesses();
52+
$this->getFacade()->getProcesses(true);
5353

5454
return static::CODE_SUCCESS;
5555
}

tests/SprykerTest/Zed/Oms/Business/OrderStateMachine/BuilderTest.php

+14-4
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,15 @@ public function testCreateProcessShouldReadFromCacheIfCacheIsEnabled(
182182
* @dataProvider omsProcessCachingWriterDataProvider
183183
*
184184
* @param bool $cacheIsEnabled
185-
* @param int $expectedReaderCalls
185+
* @param bool $regenerateCache
186+
* @param int|bool $expectedReaderCalls
186187
* @param int $expectedWriterCalls
187188
*
188189
* @return void
189190
*/
190191
public function testCreateProcessShouldWriteToCacheIfCacheIsEnabled(
191192
bool $cacheIsEnabled,
193+
bool $regenerateCache,
192194
int $expectedReaderCalls,
193195
int $expectedWriterCalls
194196
): void {
@@ -230,10 +232,10 @@ public function testCreateProcessShouldWriteToCacheIfCacheIsEnabled(
230232

231233
// Act
232234
$this->tester->resetProcessBuffer();
233-
$builder->createProcess('process-a');
235+
$builder->createProcess('process-a', $regenerateCache);
234236

235237
$this->tester->resetProcessBuffer();
236-
$builder->createProcess('process-a');
238+
$builder->createProcess('process-a', $regenerateCache);
237239
}
238240

239241
/**
@@ -242,13 +244,21 @@ public function testCreateProcessShouldWriteToCacheIfCacheIsEnabled(
242244
protected function omsProcessCachingWriterDataProvider(): array
243245
{
244246
return [
245-
'test when cache is enabled' => [
247+
'test when cache is enabled and should be regenerated' => [
248+
'cacheIsEnabled' => true,
249+
'regenerateCache' => true,
250+
'expectedReaderCalls' => 2,
251+
'expectedWriterCalls' => 2,
252+
],
253+
'test when cache is enabled and should not be regenerated' => [
246254
'cacheIsEnabled' => true,
255+
'regenerateCache' => false,
247256
'expectedReaderCalls' => 2,
248257
'expectedWriterCalls' => 1,
249258
],
250259
'test when cache is disabled' => [
251260
'cacheIsEnabled' => false,
261+
'regenerateCache' => false,
252262
'expectedReaderCalls' => 0,
253263
'expectedWriterCalls' => 0,
254264
],

0 commit comments

Comments
 (0)