Neos\Flow\Tests\Unit\ObjectManagement\ObjectSerializerTest::serializeObjectAsPropertyArraySerializesObjectPropertiesCorrectly PHP Method

serializeObjectAsPropertyArraySerializesObjectPropertiesCorrectly() public method

    public function serializeObjectAsPropertyArraySerializesObjectPropertiesCorrectly()
    {
        $className1 = 'DummyClass1' . md5(uniqid(mt_rand(), true));
        $className2 = 'DummyClass2' . md5(uniqid(mt_rand(), true));
        eval('class ' . $className2 . '{}');
        eval('class ' . $className1 . ' {
			private $objectProperty;

			public function __construct() {
				$this->objectProperty = new ' . $className2 . '();
			}

			public function getObjectProperty() {
				return $this->objectProperty;
			}
		}');
        $mockReflectionService = $this->getMockBuilder(ReflectionService::class)->disableOriginalConstructor()->getMock();
        $mockReflectionService->expects($this->at(0))->method('getClassPropertyNames')->with($className1)->will($this->returnValue(['objectProperty']));
        $mockReflectionService->expects($this->at(2))->method('getClassPropertyNames')->with($className2)->will($this->returnValue([]));
        $mockObjectManager = $this->getMockBuilder(ObjectManager::class)->disableOriginalConstructor()->getMock();
        $mockObjectManager->expects($this->once())->method('getObjectNameByClassName')->with($className2)->will($this->returnValue('objectName2'));
        $mockObjectManager->expects($this->once())->method('getScope')->with('objectName2')->will($this->returnValue(Configuration::SCOPE_PROTOTYPE));
        $mockPersistenceManager = $this->createMock(PersistenceManagerInterface::class);
        $objectSerializer = $this->getMockBuilder(ObjectSerializer::class)->disableOriginalConstructor()->setMethods(['dummy'])->getMock();
        $objectSerializer->injectReflectionService($mockReflectionService);
        $objectSerializer->injectObjectManager($mockObjectManager);
        $objectSerializer->injectPersistenceManager($mockPersistenceManager);
        $someObject = new $className1();
        $expectedPropertyArray = [\spl_object_hash($someObject) => [ObjectSerializer::CLASSNAME => $className1, ObjectSerializer::PROPERTIES => ['objectProperty' => [ObjectSerializer::TYPE => 'object', ObjectSerializer::VALUE => spl_object_hash($someObject->getObjectProperty())]]], spl_object_hash($someObject->getObjectProperty()) => [ObjectSerializer::CLASSNAME => $className2, ObjectSerializer::PROPERTIES => []]];
        $this->assertEquals($expectedPropertyArray, $objectSerializer->serializeObjectAsPropertyArray($someObject), 'The object property was not serialized correctly.');
    }
ObjectSerializerTest