useModelSet('navigation'); parent::setUp(); } public function putGermanysBrandenburderTor() { $country = new NavCountry("Germany"); $this->_em->persist($country); $poi = new NavPointOfInterest(100, 200, "Brandenburger Tor", $country); $this->_em->persist($poi); $this->_em->flush(); $this->_em->clear(); } public function putTripAroundEurope() { $poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200)); $tour = new NavTour("Trip around Europe"); $tour->addPointOfInterest($poi); $this->_em->persist($tour); $this->_em->flush(); $this->_em->clear(); return $tour; } public function testPersistCompositePkEntity() { $this->putGermanysBrandenburderTor(); $poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200)); $this->assertInstanceOf('Doctrine\Tests\Models\Navigation\NavPointOfInterest', $poi); $this->assertEquals(100, $poi->getLat()); $this->assertEquals(200, $poi->getLong()); $this->assertEquals('Brandenburger Tor', $poi->getName()); } /** * @group DDC-1651 */ public function testSetParameterCompositeKeyObject() { $this->putGermanysBrandenburderTor(); $poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200)); $photo = new NavPhotos($poi, "asdf"); $this->_em->persist($photo); $this->_em->flush(); $this->_em->clear(); $dql = 'SELECT t FROM Doctrine\Tests\Models\Navigation\NavPhotos t WHERE t.poi = ?1'; $this->setExpectedException('Doctrine\ORM\Query\QueryException', 'A single-valued association path expression to an entity with a composite primary key is not supported.'); $sql = $this->_em->createQuery($dql)->getSQL(); } public function testManyToManyCompositeRelation() { $this->putGermanysBrandenburderTor(); $tour = $this->putTripAroundEurope(); $tour = $this->_em->find('Doctrine\Tests\Models\Navigation\NavTour', $tour->getId()); $this->assertEquals(1, count($tour->getPointOfInterests())); } public function testCompositeDqlEagerFetching() { $this->putGermanysBrandenburderTor(); $this->putTripAroundEurope(); $dql = 'SELECT t, p, c FROM Doctrine\Tests\Models\Navigation\NavTour t ' . 'INNER JOIN t.pois p INNER JOIN p.country c'; $tours = $this->_em->createQuery($dql)->getResult(); $this->assertEquals(1, count($tours)); $pois = $tours[0]->getPointOfInterests(); $this->assertEquals(1, count($pois)); $this->assertEquals('Brandenburger Tor', $pois[0]->getName()); } public function testCompositeCollectionMemberExpression() { $this->markTestSkipped('How to test this?'); $this->putGermanysBrandenburderTor(); $this->putTripAroundEurope(); $dql = 'SELECT t FROM Doctrine\Tests\Models\Navigation\NavTour t, Doctrine\Tests\Models\Navigation\NavPointOfInterest p ' . 'WHERE p MEMBER OF t.pois'; $tours = $this->_em->createQuery($dql) ->getResult(); $this->assertEquals(1, count($tours)); } public function testSpecifiyUnknownIdentifierPrimaryKeyFails() { $this->setExpectedException('Doctrine\ORM\ORMException', 'The identifier long is missing for a query of Doctrine\Tests\Models\Navigation\NavPointOfInterest'); $poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('key1' => 100)); } /** * @group DDC-1939 */ public function testDeleteCompositePersistentCollection() { $this->putGermanysBrandenburderTor(); $poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200)); $poi->addVisitor(new NavUser("test1")); $poi->addVisitor(new NavUser("test2")); $this->_em->flush(); $poi->getVisitors()->clear(); $this->_em->flush(); $this->_em->clear(); $poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200)); $this->assertEquals(0, count($poi->getVisitors())); } }