From a326ea4d1f74a85692ddc6f37b506dc6ae871086 Mon Sep 17 00:00:00 2001 From: Andreas Braun Date: Fri, 8 Sep 2023 10:51:35 +0200 Subject: [PATCH] Convert embedded metadata document to stdClass --- tests/Fixtures/Codec/TestFileCodec.php | 12 +++++++++--- tests/Fixtures/Document/TestFile.php | 3 ++- tests/GridFS/BucketFunctionalTest.php | 6 +++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/tests/Fixtures/Codec/TestFileCodec.php b/tests/Fixtures/Codec/TestFileCodec.php index 9795fb8c5..ff4767429 100644 --- a/tests/Fixtures/Codec/TestFileCodec.php +++ b/tests/Fixtures/Codec/TestFileCodec.php @@ -11,6 +11,8 @@ use MongoDB\Exception\UnsupportedValueException; use MongoDB\Tests\Fixtures\Document\TestFile; +use function assert; + final class TestFileCodec implements DocumentCodec { use DecodeIfSupported; @@ -31,13 +33,17 @@ public function decode($value): TestFile $fileObject->id = $value->get('_id'); $fileObject->length = (int) $value->get('length'); $fileObject->chunkSize = (int) $value->get('chunkSize'); - $fileObject->filename = $value->get('filename'); + $fileObject->filename = (string) $value->get('filename'); $uploadDate = $value->get('uploadDate'); - $fileObject->uploadDate = $uploadDate ? DateTimeImmutable::createFromMutable($uploadDate->toDateTime()) : null; + if ($uploadDate instanceof UTCDateTime) { + $fileObject->uploadDate = DateTimeImmutable::createFromMutable($uploadDate->toDateTime()); + } if ($value->has('metadata')) { - $fileObject->metadata = $value->get('metadata'); + $metadata = $value->get('metadata'); + assert($metadata instanceof Document); + $fileObject->metadata = $metadata->toPHP(); } return $fileObject; diff --git a/tests/Fixtures/Document/TestFile.php b/tests/Fixtures/Document/TestFile.php index 2f7cf4c0a..a9fcfd02d 100644 --- a/tests/Fixtures/Document/TestFile.php +++ b/tests/Fixtures/Document/TestFile.php @@ -18,6 +18,7 @@ namespace MongoDB\Tests\Fixtures\Document; use DateTimeImmutable; +use stdClass; final class TestFile { @@ -26,5 +27,5 @@ final class TestFile public int $chunkSize; public ?DateTimeImmutable $uploadDate = null; public string $filename; - public $metadata; + public ?stdClass $metadata = null; } diff --git a/tests/GridFS/BucketFunctionalTest.php b/tests/GridFS/BucketFunctionalTest.php index f83b51ce2..c87003e24 100644 --- a/tests/GridFS/BucketFunctionalTest.php +++ b/tests/GridFS/BucketFunctionalTest.php @@ -3,7 +3,6 @@ namespace MongoDB\Tests\GridFS; use MongoDB\BSON\Binary; -use MongoDB\BSON\Document; use MongoDB\Collection; use MongoDB\Driver\ReadConcern; use MongoDB\Driver\ReadPreference; @@ -19,6 +18,7 @@ use MongoDB\Tests\Fixtures\Codec\TestDocumentCodec; use MongoDB\Tests\Fixtures\Codec\TestFileCodec; use MongoDB\Tests\Fixtures\Document\TestFile; +use stdClass; use function array_merge; use function call_user_func; @@ -509,8 +509,8 @@ public function testGetFileDocumentForStreamUsesCodec(): void $this->assertInstanceOf(TestFile::class, $fileDocument); $this->assertSame('filename', $fileDocument->filename); - $this->assertInstanceOf(Document::class, $fileDocument->metadata); - $this->assertSame($metadata, $fileDocument->metadata->toPHP(['root' => 'array'])); + $this->assertInstanceOf(stdClass::class, $fileDocument->metadata); + $this->assertSame($metadata, (array) $fileDocument->metadata); } public function testGetFileDocumentForStreamWithReadableStream(): void