From 80447801e8724c9df3dd3f701c2b1aed98d86a83 Mon Sep 17 00:00:00 2001 From: Ilya Orlov Date: Fri, 13 Sep 2024 19:40:48 +0500 Subject: [PATCH] Test for constructor with default values as objects --- tests/AutoMapperTest.php | 22 +++++++++++++++++++ .../ConstructorWithDefaultValuesAsObjects.php | 15 +++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 tests/Fixtures/ConstructorWithDefaultValuesAsObjects.php diff --git a/tests/AutoMapperTest.php b/tests/AutoMapperTest.php index fc79223..42d0c0d 100644 --- a/tests/AutoMapperTest.php +++ b/tests/AutoMapperTest.php @@ -26,6 +26,7 @@ use AutoMapper\Tests\Fixtures\ClassWithNullablePropertyInConstructor; use AutoMapper\Tests\Fixtures\ClassWithPrivateProperty; use AutoMapper\Tests\Fixtures\ConstructorWithDefaultValues; +use AutoMapper\Tests\Fixtures\ConstructorWithDefaultValuesAsObjects; use AutoMapper\Tests\Fixtures\DifferentSetterGetterType; use AutoMapper\Tests\Fixtures\Dog; use AutoMapper\Tests\Fixtures\Fish; @@ -561,6 +562,27 @@ public function testConstructorWithDefault(): void self::assertSame(30, $userDto->getAge()); } + public function testConstructorWithDefaultsAsObjects(): void + { + $data = ['baz' => 'baz']; + /** @var ConstructorWithDefaultValuesAsObjects $object */ + $object = $this->autoMapper->map($data, ConstructorWithDefaultValuesAsObjects::class); + + self::assertInstanceOf(ConstructorWithDefaultValuesAsObjects::class, $object); + self::assertInstanceOf(\DateTimeImmutable::class, $object->date); + self::assertInstanceOf(\Fixtures\IntDTO::class, $object->IntDTO); + self::assertSame('baz', $object->baz); + + $stdClassData = (object) $data; + /** @var ConstructorWithDefaultValuesAsObjects $object */ + $object = $this->autoMapper->map($stdClassData, ConstructorWithDefaultValuesAsObjects::class); + + self::assertInstanceOf(ConstructorWithDefaultValuesAsObjects::class, $object); + self::assertInstanceOf(\DateTimeImmutable::class, $object->date); + self::assertInstanceOf(\Fixtures\IntDTO::class, $object->IntDTO); + self::assertSame('baz', $object->baz); + } + public function testConstructorDisable(): void { $this->buildAutoMapper(mapPrivatePropertiesAndMethod: true); diff --git a/tests/Fixtures/ConstructorWithDefaultValuesAsObjects.php b/tests/Fixtures/ConstructorWithDefaultValuesAsObjects.php new file mode 100644 index 0000000..cb4230f --- /dev/null +++ b/tests/Fixtures/ConstructorWithDefaultValuesAsObjects.php @@ -0,0 +1,15 @@ +