From d8ff0706b06c66ad5fbeb1e89bf4761b7d0da370 Mon Sep 17 00:00:00 2001 From: sardin Date: Wed, 2 Jul 2025 09:24:22 +0200 Subject: [PATCH] Add access to JobExecution in CallbackWriter --- src/batch/src/Job/Item/Writer/CallbackWriter.php | 8 ++++++-- .../tests/Job/Item/Writer/CallbackWriterTest.php | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/batch/src/Job/Item/Writer/CallbackWriter.php b/src/batch/src/Job/Item/Writer/CallbackWriter.php index a97b0c3c..f68d0a05 100644 --- a/src/batch/src/Job/Item/Writer/CallbackWriter.php +++ b/src/batch/src/Job/Item/Writer/CallbackWriter.php @@ -5,14 +5,18 @@ namespace Yokai\Batch\Job\Item\Writer; use Yokai\Batch\Job\Item\ItemWriterInterface; +use Yokai\Batch\Job\JobExecutionAwareInterface; +use Yokai\Batch\Job\JobExecutionAwareTrait; /** * An {@see ItemWriterInterface} that write items with a {@see Closure} provided at construction. * * Provided {@see Closure} must accept items to write and must return nothing. */ -final class CallbackWriter implements ItemWriterInterface +final class CallbackWriter implements ItemWriterInterface, JobExecutionAwareInterface { + use JobExecutionAwareTrait; + public function __construct( private \Closure $callback, ) { @@ -20,6 +24,6 @@ public function __construct( public function write(iterable $items): void { - ($this->callback)($items); + ($this->callback)($items, $this->jobExecution); } } diff --git a/src/batch/tests/Job/Item/Writer/CallbackWriterTest.php b/src/batch/tests/Job/Item/Writer/CallbackWriterTest.php index e0756da9..c2f69f07 100644 --- a/src/batch/tests/Job/Item/Writer/CallbackWriterTest.php +++ b/src/batch/tests/Job/Item/Writer/CallbackWriterTest.php @@ -6,18 +6,27 @@ use PHPUnit\Framework\TestCase; use Yokai\Batch\Job\Item\Writer\CallbackWriter; +use Yokai\Batch\JobExecution; class CallbackWriterTest extends TestCase { public function testWrite(): void { $saveditems = []; - $writer = new CallbackWriter(function (array $items) use (&$saveditems) { - $saveditems = [...$saveditems, ...$items]; - }); + $writer = new CallbackWriter( + function (array $items, JobExecution $jobExecution) use (&$saveditems, &$receivedJobExecution) { + $saveditems = [...$saveditems, ...$items]; + $receivedJobExecution = $jobExecution; + }, + ); + + $writer->setJobExecution(JobExecution::createRoot(id: '123', jobName: 'test')); $writer->write([1, 2, 3]); $writer->write([4, 5, 6]); self::assertSame([1, 2, 3, 4, 5, 6], $saveditems); + self::assertInstanceOf(JobExecution::class, $receivedJobExecution); + self::assertSame('123', $receivedJobExecution->getId()); + self::assertSame('test', $receivedJobExecution->getJobName()); } }