Skip to content

Commit 47bd8fa

Browse files
committed
RetrieveReservationDetailParametersFactory added
1 parent 05af560 commit 47bd8fa

2 files changed

Lines changed: 77 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace TK\SDK\ValueObject\Factory;
4+
5+
use TK\SDK\Exception\InvalidArgumentException;
6+
use TK\SDK\ValueObject\RetrieveReservationDetailParameters;
7+
8+
class RetrieveReservationDetailParametersFactory implements ValueObjectFactoryInterface
9+
{
10+
/**
11+
* @param array $parameters
12+
* @return RetrieveReservationDetailParameters
13+
* @throws \Exception
14+
*/
15+
public static function createFromArray(array $parameters): RetrieveReservationDetailParameters
16+
{
17+
return new RetrieveReservationDetailParameters($parameters['UniqueId'], $parameters['Surname']);
18+
}
19+
20+
21+
/**
22+
* @param string $json
23+
* @return RetrieveReservationDetailParameters
24+
* @throws InvalidArgumentException
25+
* @throws \Exception
26+
*/
27+
public static function createFromJson(string $json): RetrieveReservationDetailParameters
28+
{
29+
$parameters = json_decode($json, (bool)JSON_OBJECT_AS_ARRAY);
30+
if (json_last_error() !== JSON_ERROR_NONE) {
31+
throw new InvalidArgumentException(
32+
'RetrieveReservationDetailParametersFactory Error: ' . json_last_error_msg()
33+
);
34+
}
35+
return self::createFromArray($parameters);
36+
}
37+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace TK\Test\Unit\Factory;
5+
6+
use TK\SDK\ValueObject\Factory\RetrieveReservationDetailParametersFactory;
7+
use TK\SDK\ValueObject\RetrieveReservationDetailParameters;
8+
9+
class RetrieveReservationDetailParametersFactoryTest extends \Codeception\Test\Unit
10+
{
11+
/**
12+
* @var \UnitTester
13+
*/
14+
protected $tester;
15+
16+
protected function _before()
17+
{
18+
}
19+
20+
protected function _after()
21+
{
22+
}
23+
24+
/**
25+
* @test
26+
* @throws \Exception
27+
*/
28+
public function shouldReturnRetrieveReservationDetailParameters() : void
29+
{
30+
$json =<<<JSON
31+
{
32+
"UniqueId": "TT8VN8",
33+
"Surname": "CELIKTAS"
34+
}
35+
JSON;
36+
$parameterObject = RetrieveReservationDetailParametersFactory::createFromJson($json);
37+
$this->assertInstanceOf(RetrieveReservationDetailParameters::class, $parameterObject);
38+
$this->assertEquals(json_decode($json, true), $parameterObject->getValue());
39+
}
40+
}

0 commit comments

Comments
 (0)