Exemplo n.º 1
0
 public function testInitializedProxyUnserialization()
 {
     // persister will retrieve the lazy object itself, so that we don't have to re-define all field values
     $this->proxyLoader->expects($this->once())->method('load')->will($this->returnValue($this->lazyObject));
     $this->lazyObject->__setInitializer($this->getSuggestedInitializerImplementation());
     $this->lazyObject->__load();
     $serialized = serialize($this->lazyObject);
     $reflClass = $this->lazyLoadableObjectMetadata->getReflectionClass();
     /* @var $unserialized LazyLoadableObject|Proxy */
     $unserialized = unserialize($serialized);
     $this->assertTrue($unserialized->__isInitialized(), 'serialization didn\'t cause intialization');
     // Checking transient fields
     $this->assertSame('publicTransientFieldValue', $unserialized->publicTransientField, 'transient fields are kept');
     $protectedTransientField = $reflClass->getProperty('protectedTransientField');
     $protectedTransientField->setAccessible(true);
     $this->assertSame('protectedTransientFieldValue', $protectedTransientField->getValue($unserialized), 'transient fields are kept');
     // Checking persistent fields
     $this->assertSame('publicPersistentFieldValue', $unserialized->publicPersistentField, 'persistent fields are kept');
     $protectedPersistentField = $reflClass->getProperty('protectedPersistentField');
     $protectedPersistentField->setAccessible(true);
     $this->assertSame('protectedPersistentFieldValue', $protectedPersistentField->getValue($unserialized), 'persistent fields are kept');
     // Checking identifiers
     $this->assertSame('publicIdentifierFieldValue', $unserialized->publicIdentifierField, 'identifiers are kept');
     $protectedIdentifierField = $reflClass->getProperty('protectedIdentifierField');
     $protectedIdentifierField->setAccessible(true);
     $this->assertSame('protectedIdentifierFieldValue', $protectedIdentifierField->getValue($unserialized), 'identifiers are kept');
     // Checking associations
     $this->assertSame('publicAssociationValue', $unserialized->publicAssociation, 'associations are kept');
     $protectedAssociationField = $reflClass->getProperty('protectedAssociation');
     $protectedAssociationField->setAccessible(true);
     $this->assertSame('protectedAssociationValue', $protectedAssociationField->getValue($unserialized), 'associations are kept');
 }