diff --git a/src/batch/src/Job/Item/Writer/CallbackWriter.php b/src/batch/src/Job/Item/Writer/CallbackWriter.php index a97b0c3..f68d0a0 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 e0756da..c2f69f0 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()); } }