2010-04-03 01:37:15 +04:00
< ? php
namespace Doctrine\Tests\ORM\Functional ;
use Doctrine\Tests\Models\Navigation\NavCountry ;
use Doctrine\Tests\Models\Navigation\NavPointOfInterest ;
use Doctrine\Tests\Models\Navigation\NavTour ;
require_once __DIR__ . '/../../TestInit.php' ;
class CompositePrimaryKeyTest extends \Doctrine\Tests\OrmFunctionalTestCase
{
public function setUp ()
{
$this -> 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 ();
2011-12-20 01:56:19 +04:00
2010-04-03 01:37:15 +04:00
$poi = $this -> _em -> find ( 'Doctrine\Tests\Models\Navigation\NavPointOfInterest' , array ( 'lat' => 100 , 'long' => 200 ));
2011-07-26 13:38:09 +04:00
$this -> assertInstanceOf ( 'Doctrine\Tests\Models\Navigation\NavPointOfInterest' , $poi );
2010-04-03 01:37:15 +04:00
$this -> assertEquals ( 100 , $poi -> getLat ());
$this -> assertEquals ( 200 , $poi -> getLong ());
$this -> assertEquals ( 'Brandenburger Tor' , $poi -> getName ());
}
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 ));
2011-12-20 01:56:19 +04:00
2010-04-03 01:37:15 +04:00
$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 ));
}
2011-12-20 01:56:19 +04:00
2011-12-02 00:18:39 +04:00
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 ));
}
2010-04-03 01:37:15 +04:00
}