From c17a38f1bc694945c5590176659e6bfdeca72f61 Mon Sep 17 00:00:00 2001 From: Mathijs Date: Wed, 2 Jul 2025 11:14:55 +0200 Subject: [PATCH] Mapping "extraVelden" to Artikel. --- src/Mapper/V2/ArtikelMapper.php | 10 ++++ src/Model/V2/Artikel.php | 15 ++++++ .../V2/ArtikelMapper/ExtraVeldenTest.php | 51 +++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 tests/Mapper/V2/ArtikelMapper/ExtraVeldenTest.php diff --git a/src/Mapper/V2/ArtikelMapper.php b/src/Mapper/V2/ArtikelMapper.php index bff0b28..3e96415 100644 --- a/src/Mapper/V2/ArtikelMapper.php +++ b/src/Mapper/V2/ArtikelMapper.php @@ -74,6 +74,16 @@ protected function mapResponseToArtikelModel(Artikel $artikel, array $data = []) ); } + if (!empty($data["extraVelden"])) { + $extraVelden = []; + + foreach ($data["extraVelden"] as $extraVeld) { + $extraVelden[$extraVeld["naam"]] = $extraVeld["waarde"]; + } + + $artikel->setExtraVelden($extraVelden); + } + return $artikel; } diff --git a/src/Model/V2/Artikel.php b/src/Model/V2/Artikel.php index 1e94345..b02afee 100644 --- a/src/Model/V2/Artikel.php +++ b/src/Model/V2/Artikel.php @@ -88,6 +88,11 @@ final class Artikel extends SnelstartObject */ private $vrijeVoorraad; + /** + * @var array + */ + private $extraVelden = []; + /** * @var string[] */ @@ -249,6 +254,16 @@ public function setVrijeVoorraad(float $vrijeVoorraad): self return $this; } + public function getExtraVelden(): array + { + return $this->extraVelden; + } + + public function setExtraVelden(array $extraVelden): void + { + $this->extraVelden = $extraVelden; + } + public function getInkoopprijs(): Money { return $this->inkoopprijs; diff --git a/tests/Mapper/V2/ArtikelMapper/ExtraVeldenTest.php b/tests/Mapper/V2/ArtikelMapper/ExtraVeldenTest.php new file mode 100644 index 0000000..fd8903b --- /dev/null +++ b/tests/Mapper/V2/ArtikelMapper/ExtraVeldenTest.php @@ -0,0 +1,51 @@ + [ + [ + "naam" => "Extra veld 1", + "waarde" => "Test value", + ], + [ + "naam" => "Extra veld 2", + "waarde" => 100, + ], + [ + "naam" => "Extra veld 3", + "waarde" => true, + ], + ], + ]; + $artikelResponse = new Response(200, [], Utils::jsonEncode($artikelData)); + + $artikel = (new ArtikelMapper())->find($artikelResponse); + + $extraVelden = $artikel->getExtraVelden(); + + foreach ($artikelData["extraVelden"] as $extraVeld) { + $this->assertArrayHasKey($extraVeld["naam"], $extraVelden); + $this->assertEquals($extraVeld["waarde"], $extraVelden[$extraVeld["naam"]]); + } + } + + public function testExtraVeldenAreEmptyIfNotGiven(): void + { + $artikelData = []; + $artikelResponse = new Response(200, [], Utils::jsonEncode($artikelData)); + + $artikel = (new ArtikelMapper())->find($artikelResponse); + + $this->assertEmpty($artikel->getExtraVelden()); + } +}