Skip to content

Commit 92ec43d

Browse files
committed
Handle deserialization of datetime fields that are empty strings (#875)
1 parent f49f712 commit 92ec43d

2 files changed

Lines changed: 35 additions & 1 deletion

File tree

src/Traits/Deserializes.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ protected static function deserializeValue(mixed $value, array|string $type): mi
9292
if (! class_exists($type) && ! interface_exists($type)) {
9393
throw new InvalidAttributeTypeException("Neither the Class nor Interface `$type` exists");
9494
} elseif ($type == DateTimeInterface::class) {
95-
if ($value === null) {
95+
if ($value === null || $value === '') {
9696
return null;
9797
}
9898

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace SellingPartnerApi\Tests\Seller\FBAInboundV20240320\Responses;
4+
5+
use DateTime;
6+
use DateTimeInterface;
7+
use PHPUnit\Framework\TestCase;
8+
use SellingPartnerApi\Seller\FBAInventoryV1\Responses\GetInventorySummariesResponse;
9+
10+
class GetInventorySummariesTest extends TestCase
11+
{
12+
public function test_deserialize_empty_string_datetime(): void
13+
{
14+
$result = GetInventorySummariesResponse::deserialize([
15+
'payload' => [
16+
'granularity' => [
17+
'granularityType' => 'Marketplace',
18+
'granularityId' => 'ATVPDKIKX0DER',
19+
],
20+
'inventorySummaries' => [
21+
[
22+
'asin' => 'B000000000',
23+
'fnSku' => '1234567890',
24+
'sellerSku' => '1234567890',
25+
'condition' => 'New',
26+
'lastUpdatedTime' => '',
27+
]
28+
]
29+
]
30+
]);
31+
$this->assertNotNull($result);
32+
$this->assertNull($result->payload->inventorySummaries[0]->lastUpdatedTime);
33+
}
34+
}

0 commit comments

Comments
 (0)