Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / common / tests / Doctrine / Tests / Common / Persistence / PersistentObjectTest.php
diff --git a/vendor/doctrine/common/tests/Doctrine/Tests/Common/Persistence/PersistentObjectTest.php b/vendor/doctrine/common/tests/Doctrine/Tests/Common/Persistence/PersistentObjectTest.php
new file mode 100644 (file)
index 0000000..a0f77b5
--- /dev/null
@@ -0,0 +1,247 @@
+<?php
+
+namespace Doctrine\Tests\Common\Persistence;
+
+use Doctrine\Common\Persistence\PersistentObject;
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+use Doctrine\Common\Persistence\Mapping\ReflectionService;
+
+/**
+ * @group DDC-1448
+ */
+class PersistentObjectTest extends \Doctrine\Tests\DoctrineTestCase
+{
+    private $cm;
+    private $om;
+    private $object;
+
+    public function setUp()
+    {
+        $this->cm = new TestObjectMetadata;
+        $this->om = $this->getMock('Doctrine\Common\Persistence\ObjectManager');
+        $this->om->expects($this->any())->method('getClassMetadata')
+                 ->will($this->returnValue($this->cm));
+        $this->object = new TestObject;
+        PersistentObject::setObjectManager($this->om);
+        $this->object->injectObjectManager($this->om, $this->cm);
+    }
+
+    public function testGetObjectManager()
+    {
+        $this->assertSame($this->om, PersistentObject::getObjectManager());
+    }
+
+    public function testNonMatchingObjectManager()
+    {
+        $this->setExpectedException('RuntimeException');
+        $om = $this->getMock('Doctrine\Common\Persistence\ObjectManager');
+        $this->object->injectObjectManager($om, $this->cm);
+    }
+
+    public function testGetField()
+    {
+        $this->assertEquals('beberlei', $this->object->getName());
+    }
+
+    public function testSetField()
+    {
+        $this->object->setName("test");
+        $this->assertEquals("test", $this->object->getName());
+    }
+
+    public function testGetIdentifier()
+    {
+        $this->assertEquals(1, $this->object->getId());
+    }
+
+    public function testSetIdentifier()
+    {
+        $this->setExpectedException('BadMethodCallException');
+        $this->object->setId(2);
+    }
+
+    public function testSetUnknownField()
+    {
+        $this->setExpectedException('BadMethodCallException');
+        $this->object->setUnknown("test");
+    }
+
+    public function testGetUnknownField()
+    {
+        $this->setExpectedException('BadMethodCallException');
+        $this->object->getUnknown();
+    }
+
+    public function testGetToOneAssociation()
+    {
+        $this->assertNull($this->object->getParent());
+    }
+
+    public function testSetToOneAssociation()
+    {
+        $parent = new TestObject();
+        $this->object->setParent($parent);
+        $this->assertSame($parent, $this->object->getParent($parent));
+    }
+
+    public function testSetInvalidToOneAssocation()
+    {
+        $parent = new \stdClass();
+
+        $this->setExpectedException('InvalidArgumentException');
+        $this->object->setParent($parent);
+    }
+
+    public function testSetToOneAssociationNull()
+    {
+        $parent = new TestObject();
+        $this->object->setParent($parent);
+        $this->object->setParent(null);
+        $this->assertNull($this->object->getParent());
+    }
+
+    public function testAddToManyAssocation()
+    {
+        $child = new TestObject();
+        $this->object->addChildren($child);
+
+        $this->assertSame($this->object, $child->getParent());
+        $this->assertEquals(1, count($this->object->getChildren()));
+
+        $child = new TestObject();
+        $this->object->addChildren($child);
+
+        $this->assertEquals(2, count($this->object->getChildren()));
+    }
+
+    public function testAddInvalidToManyAssocation()
+    {
+        $this->setExpectedException('InvalidArgumentException');
+        $this->object->addChildren(new \stdClass());
+    }
+
+    public function testNoObjectManagerSet()
+    {
+        PersistentObject::setObjectManager(null);
+        $child = new TestObject();
+
+        $this->setExpectedException('RuntimeException');
+        $child->setName("test");
+    }
+
+    public function testInvalidMethod()
+    {
+        $this->setExpectedException('BadMethodCallException');
+        $this->object->asdf();
+    }
+
+    public function testAddInvalidCollection()
+    {
+        $this->setExpectedException('BadMethodCallException');
+        $this->object->addAsdf(new \stdClass());
+    }
+}
+
+class TestObject extends PersistentObject
+{
+    protected $id = 1;
+    protected $name = 'beberlei';
+    protected $parent;
+    protected $children;
+}
+
+class TestObjectMetadata implements ClassMetadata
+{
+
+    public function getAssociationMappedByTargetField($assocName)
+    {
+        $assoc = array('children' => 'parent');
+        return $assoc[$assocName];
+    }
+
+    public function getAssociationNames()
+    {
+        return array('parent', 'children');
+    }
+
+    public function getAssociationTargetClass($assocName)
+    {
+        return __NAMESPACE__ . '\TestObject';
+    }
+
+    public function getFieldNames()
+    {
+        return array('id', 'name');
+    }
+
+    public function getIdentifier()
+    {
+        return array('id');
+    }
+
+    public function getName()
+    {
+        return __NAMESPACE__ . '\TestObject';
+    }
+
+    public function getReflectionClass()
+    {
+        return new \ReflectionClass($this->getName());
+    }
+
+    public function getTypeOfField($fieldName)
+    {
+        $types = array('id' => 'integer', 'name' => 'string');
+        return $types[$fieldName];
+    }
+
+    public function hasAssociation($fieldName)
+    {
+        return in_array($fieldName, array('parent', 'children'));
+    }
+
+    public function hasField($fieldName)
+    {
+        return in_array($fieldName, array('id', 'name'));
+    }
+
+    public function isAssociationInverseSide($assocName)
+    {
+        return ($assocName === 'children');
+    }
+
+    public function isCollectionValuedAssociation($fieldName)
+    {
+        return ($fieldName === 'children');
+    }
+
+    public function isIdentifier($fieldName)
+    {
+        return $fieldName === 'id';
+    }
+
+    public function isSingleValuedAssociation($fieldName)
+    {
+        return $fieldName === 'parent';
+    }
+
+    public function getIdentifierValues($entity)
+    {
+
+    }
+
+    public function getIdentifierFieldNames()
+    {
+
+    }
+
+    public function initializeReflection(ReflectionService $reflService)
+    {
+
+    }
+
+    public function wakeupReflection(ReflectionService $reflService)
+    {
+
+    }
+}