From 0667d09966a148d5df376aad279f7fa05c31162c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20Eugon=C3=A9?= Date: Mon, 20 Sep 2021 17:36:21 +0200 Subject: [PATCH] Introduce a reader that read from a value fetched by a parameter accessor --- .../Item/Reader/ParameterAccessorReader.php | 38 ++++++++++++++++ .../Reader/ParameterAccessorReaderTest.php | 44 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 src/batch/src/Job/Item/Reader/ParameterAccessorReader.php create mode 100644 src/batch/tests/Job/Item/Reader/ParameterAccessorReaderTest.php diff --git a/src/batch/src/Job/Item/Reader/ParameterAccessorReader.php b/src/batch/src/Job/Item/Reader/ParameterAccessorReader.php new file mode 100644 index 00000000..ab359f80 --- /dev/null +++ b/src/batch/src/Job/Item/Reader/ParameterAccessorReader.php @@ -0,0 +1,38 @@ +data = $data; + } + + /** + * @inheritdoc + */ + public function read(): iterable + { + $data = $this->data->get($this->jobExecution); + if (\is_iterable($data)) { + return $data; + } + + return [$data]; + } +} diff --git a/src/batch/tests/Job/Item/Reader/ParameterAccessorReaderTest.php b/src/batch/tests/Job/Item/Reader/ParameterAccessorReaderTest.php new file mode 100644 index 00000000..1ef6d0df --- /dev/null +++ b/src/batch/tests/Job/Item/Reader/ParameterAccessorReaderTest.php @@ -0,0 +1,44 @@ +setJobExecution(JobExecution::createRoot('123456', 'testing')); + + $actual = []; + foreach ($reader->read() as $idx => $item) { + $actual[$idx] = $item; + } + + self::assertSame($expected, $actual); + } + + public function provider(): Generator + { + yield 'Read from preserved iterable' => [ + new StaticValueParameterAccessor([1 => 'One', 2 => 'Two', 3 => 'Three']), + [1 => 'One', 2 => 'Two', 3 => 'Three'] + ]; + + yield 'Read from static' => [ + new StaticValueParameterAccessor('Not iterable and converted to array'), + ['Not iterable and converted to array'] + ]; + } +}