Skip to content

Commit 5bff968

Browse files
committed
Better object hydration and DateTime fix
1 parent 4f1978d commit 5bff968

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

Tests/HydrateTest.php

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,23 @@ public function testHydration() : void
1515
{
1616
$json = '{
1717
"contacts": [
18+
{
19+
"contact_id": "d5e4dc88-9dbf-11ef-9af2-fa163e4d7501",
20+
"email_address": {
21+
"address": "[email protected]",
22+
"permission_to_send": "explicit",
23+
"created_at": "2024-11-08T10:54:32Z",
24+
"updated_at": "2024-11-08T10:54:32Z",
25+
"opt_in_source": "Contact",
26+
"opt_in_date": "2024-11-08T10:54:32Z",
27+
"confirm_status": "off"
28+
},
29+
"first_name": "Petr",
30+
"last_name": "Pavel",
31+
"create_source": "Contact",
32+
"created_at": "2024-11-08T10:54:32Z",
33+
"updated_at": "2024-11-08T10:54:32Z"
34+
},
1835
{
1936
"contact_id": "d5e4dc88-9dbf-11ef-9af2-fa163e4d7501",
2037
"email_address": {
@@ -39,14 +56,19 @@ public function testHydration() : void
3956
$this->assertIsArray($dataArray);
4057
$this->assertIsArray($dataArray['contacts']);
4158
$this->assertEquals('Petr', $dataArray['contacts'][0]['first_name']);
59+
$this->assertEquals('Petr', $dataArray['contacts'][1]['first_name']);
4260
$this->assertIsArray($dataArray['contacts'][0]['email_address']);
61+
$this->assertIsArray($dataArray['contacts'][1]['email_address']);
4362
$this->assertEquals('[email protected]', $dataArray['contacts'][0]['email_address']['address']);
63+
$this->assertEquals('[email protected]', $dataArray['contacts'][1]['email_address']['address']);
4464
$contacts = new \PHPFUI\ConstantContact\Definition\Contacts($dataArray);
4565
$this->assertIsArray($contacts->contacts);
46-
$this->assertEquals('d5e4dc88-9dbf-11ef-9af2-fa163e4d7501', $contacts->contacts[0]->contact_id);
47-
$this->assertEquals('[email protected]', $contacts->contacts[0]->email_address->address);
66+
$this->assertEquals('d5e4dc88-9dbf-11ef-9af2-fa163e4d7501', "{$contacts->contacts[0]->contact_id}");
4867
$this->assertEquals('[email protected]', $contacts->contacts[0]->email_address->address);
49-
$this->assertEquals('2024-11-08T10:54:32Z', $contacts->contacts[0]->created_at);
68+
$this->assertEquals('[email protected]', $contacts->contacts[1]->email_address->address);
69+
$time = new \PHPFUI\ConstantContact\DateTime("2024-11-08T10:54:32Z");
70+
$this->assertEquals("{$time}", "{$contacts->contacts[0]->created_at}");
71+
$this->assertEquals("{$time}", "{$contacts->contacts[1]->created_at}");
5072
$newJson = $contacts->getJSON();
5173
$this->assertJson($newJson);
5274
$newDataArray = $contacts->toArray();

src/ConstantContact/DateTime.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ class DateTime extends \DateTime
99
{
1010
public function __toString() : string
1111
{
12-
return $this->format(\DateTimeInterface::ATOM);
12+
return $this->format('Y-m-d\TH:i:s\Z');
1313
}
1414
}

src/ConstantContact/Definition/Base.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public function __set(string $field, mixed $value)
185185
}
186186
elseif (\str_starts_with($expectedType, 'PHPFUI'))
187187
{
188-
if (\is_array($value))
188+
if (\is_array($value) || $expectedType != $type)
189189
{
190190
$value = new $expectedType($value);
191191
}

0 commit comments

Comments
 (0)