Skip to content

Commit 3ae895a

Browse files
Mathijsmanuelderuiter
authored andcommitted
Mapping "extraVelden" to Artikel.
1 parent e4f55c1 commit 3ae895a

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

src/Mapper/V2/ArtikelMapper.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@ protected function mapResponseToArtikelModel(Artikel $artikel, array $data = [])
7474
);
7575
}
7676

77+
if (!empty($data["extraVelden"])) {
78+
$extraVelden = [];
79+
80+
foreach ($data["extraVelden"] as $extraVeld) {
81+
$extraVelden[$extraVeld["naam"]] = $extraVeld["waarde"];
82+
}
83+
84+
$artikel->setExtraVelden($extraVelden);
85+
}
86+
7787
return $artikel;
7888
}
7989

src/Model/V2/Artikel.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ final class Artikel extends SnelstartObject
8888
*/
8989
private $vrijeVoorraad;
9090

91+
/**
92+
* @var array<string, mixed>
93+
*/
94+
private $extraVelden = [];
95+
9196
/**
9297
* @var string[]
9398
*/
@@ -249,6 +254,16 @@ public function setVrijeVoorraad(float $vrijeVoorraad): self
249254
return $this;
250255
}
251256

257+
public function getExtraVelden(): array
258+
{
259+
return $this->extraVelden;
260+
}
261+
262+
public function setExtraVelden(array $extraVelden): void
263+
{
264+
$this->extraVelden = $extraVelden;
265+
}
266+
252267
public function getInkoopprijs(): Money
253268
{
254269
return $this->inkoopprijs;
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace Mapper\V2\ArtikelMapper;
4+
5+
use GuzzleHttp\Psr7\Response;
6+
use PHPUnit\Framework\TestCase;
7+
use SnelstartPHP\Mapper\V2\ArtikelMapper;
8+
use SnelstartPHP\Utils;
9+
10+
class ExtraVeldenTest extends TestCase
11+
{
12+
public function testExtraVeldenAreSetOnArtikel(): void
13+
{
14+
$artikelData = [
15+
"extraVelden" => [
16+
[
17+
"naam" => "Extra veld 1",
18+
"waarde" => "Test value",
19+
],
20+
[
21+
"naam" => "Extra veld 2",
22+
"waarde" => 100,
23+
],
24+
[
25+
"naam" => "Extra veld 3",
26+
"waarde" => true,
27+
],
28+
],
29+
];
30+
$artikelResponse = new Response(200, [], Utils::jsonEncode($artikelData));
31+
32+
$artikel = (new ArtikelMapper())->find($artikelResponse);
33+
34+
$extraVelden = $artikel->getExtraVelden();
35+
36+
foreach ($artikelData["extraVelden"] as $extraVeld) {
37+
$this->assertArrayHasKey($extraVeld["naam"], $extraVelden);
38+
$this->assertEquals($extraVeld["waarde"], $extraVelden[$extraVeld["naam"]]);
39+
}
40+
}
41+
42+
public function testExtraVeldenAreEmptyIfNotGiven(): void
43+
{
44+
$artikelData = [];
45+
$artikelResponse = new Response(200, [], Utils::jsonEncode($artikelData));
46+
47+
$artikel = (new ArtikelMapper())->find($artikelResponse);
48+
49+
$this->assertEmpty($artikel->getExtraVelden());
50+
}
51+
}

0 commit comments

Comments
 (0)