Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / common / tests / Doctrine / Tests / Common / Persistence / Mapping / ChainDriverTest.php
1 <?php
2
3 namespace Doctrine\Tests\Common\Persistence\Mapping;
4
5 use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
6 use Doctrine\Tests\DoctrineTestCase;
7
8 class DriverChainTest extends DoctrineTestCase
9 {
10     public function testDelegateToMatchingNamespaceDriver()
11     {
12         $className = 'Doctrine\Tests\Common\Persistence\Mapping\DriverChainEntity';
13         $classMetadata = $this->getMock('Doctrine\Common\Persistence\Mapping\ClassMetadata');
14
15         $chain = new MappingDriverChain();
16
17         $driver1 = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver');
18         $driver1->expects($this->never())
19                 ->method('loadMetadataForClass');
20         $driver1->expectS($this->never())
21                 ->method('isTransient');
22
23         $driver2 = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver');
24         $driver2->expects($this->at(0))
25                 ->method('loadMetadataForClass')
26                 ->with($this->equalTo($className), $this->equalTo($classMetadata));
27         $driver2->expects($this->at(1))
28                 ->method('isTransient')
29                 ->with($this->equalTo($className))
30                 ->will($this->returnValue( true ));
31
32         $chain->addDriver($driver1, 'Doctrine\Tests\Models\Company');
33         $chain->addDriver($driver2, 'Doctrine\Tests\Common\Persistence\Mapping');
34
35         $chain->loadMetadataForClass($className, $classMetadata);
36
37         $this->assertTrue( $chain->isTransient($className) );
38     }
39
40     public function testLoadMetadata_NoDelegatorFound_ThrowsMappingException()
41     {
42         $className = 'Doctrine\Tests\Common\Persistence\Mapping\DriverChainEntity';
43         $classMetadata = $this->getMock('Doctrine\Common\Persistence\Mapping\ClassMetadata');
44
45         $chain = new MappingDriverChain();
46
47         $this->setExpectedException('Doctrine\Common\Persistence\Mapping\MappingException');
48         $chain->loadMetadataForClass($className, $classMetadata);
49     }
50
51     public function testGatherAllClassNames()
52     {
53         $className = 'Doctrine\Tests\Common\Persistence\Mapping\DriverChainEntity';
54         $classMetadata = $this->getMock('Doctrine\Common\Peristence\ClassMetadata');
55
56         $chain = new MappingDriverChain();
57
58         $driver1 = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver');
59         $driver1->expects($this->once())
60                 ->method('getAllClassNames')
61                 ->will($this->returnValue(array('Doctrine\Tests\Models\Company\Foo')));
62
63         $driver2 = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver');
64         $driver2->expects($this->once())
65                 ->method('getAllClassNames')
66                 ->will($this->returnValue(array('Doctrine\Tests\ORM\Mapping\Bar', 'Doctrine\Tests\ORM\Mapping\Baz', 'FooBarBaz')));
67
68         $chain->addDriver($driver1, 'Doctrine\Tests\Models\Company');
69         $chain->addDriver($driver2, 'Doctrine\Tests\ORM\Mapping');
70
71         $this->assertEquals(array(
72             'Doctrine\Tests\Models\Company\Foo',
73             'Doctrine\Tests\ORM\Mapping\Bar',
74             'Doctrine\Tests\ORM\Mapping\Baz'
75         ), $chain->getAllClassNames());
76     }
77
78     /**
79      * @group DDC-706
80      */
81     public function testIsTransient()
82     {
83         $driver1 = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver');
84         $chain = new MappingDriverChain();
85         $chain->addDriver($driver1, 'Doctrine\Tests\Models\CMS');
86
87         $this->assertTrue($chain->isTransient('stdClass'), "stdClass isTransient");
88     }
89
90     /**
91      * @group DDC-1412
92      */
93     public function testDefaultDriver()
94     {
95         $companyDriver      = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver');
96         $dafaultDriver      = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver');
97         $entityClassName    = 'Doctrine\Tests\ORM\Mapping\DriverChainEntity';
98         $managerClassName   = 'Doctrine\Tests\Models\Company\CompanyManager';
99         $chain              = new MappingDriverChain();
100
101         $companyDriver->expects($this->never())
102             ->method('loadMetadataForClass');
103         $companyDriver->expects($this->once())
104             ->method('isTransient')
105             ->with($this->equalTo($managerClassName))
106             ->will($this->returnValue(false));
107
108         $dafaultDriver->expects($this->never())
109             ->method('loadMetadataForClass');
110         $dafaultDriver->expects($this->once())
111             ->method('isTransient')
112             ->with($this->equalTo($entityClassName))
113             ->will($this->returnValue(true));
114
115         $this->assertNull($chain->getDefaultDriver());
116
117         $chain->setDefaultDriver($dafaultDriver);
118         $chain->addDriver($companyDriver, 'Doctrine\Tests\Models\Company');
119
120         $this->assertSame($dafaultDriver, $chain->getDefaultDriver());
121
122         $this->assertTrue($chain->isTransient($entityClassName));
123         $this->assertFalse($chain->isTransient($managerClassName));
124     }
125 }
126
127 class DriverChainEntity
128 {
129
130 }