assertNull($driver->getGlobalBasename()); $driver->setGlobalBasename("global"); $this->assertEquals("global", $driver->getGlobalBasename()); } public function testGetElementFromGlobalFile() { $driver = new TestFileDriver($this->newLocator()); $driver->setGlobalBasename("global"); $element = $driver->getElement('stdGlobal'); $this->assertEquals('stdGlobal', $element); } public function testGetElementFromFile() { $locator = $this->newLocator(); $locator->expects($this->once()) ->method('findMappingFile') ->with($this->equalTo('stdClass')) ->will($this->returnValue(__DIR__ . '/_files/stdClass.yml')); $driver = new TestFileDriver($locator); $this->assertEquals('stdClass', $driver->getElement('stdClass')); } public function testGetAllClassNamesGlobalBasename() { $driver = new TestFileDriver($this->newLocator()); $driver->setGlobalBasename("global"); $classNames = $driver->getAllClassNames(); $this->assertEquals(array('stdGlobal', 'stdGlobal2'), $classNames); } public function testGetAllClassNamesFromMappingFile() { $locator = $this->newLocator(); $locator->expects($this->any()) ->method('getAllClassNames') ->with($this->equalTo(null)) ->will($this->returnValue(array('stdClass'))); $driver = new TestFileDriver($locator); $classNames = $driver->getAllClassNames(); $this->assertEquals(array('stdClass'), $classNames); } public function testGetAllClassNamesBothSources() { $locator = $this->newLocator(); $locator->expects($this->any()) ->method('getAllClassNames') ->with($this->equalTo('global')) ->will($this->returnValue(array('stdClass'))); $driver = new TestFileDriver($locator); $driver->setGlobalBasename("global"); $classNames = $driver->getAllClassNames(); $this->assertEquals(array('stdGlobal', 'stdGlobal2', 'stdClass'), $classNames); } public function testIsNotTransient() { $locator = $this->newLocator(); $locator->expects($this->once()) ->method('fileExists') ->with($this->equalTo('stdClass')) ->will($this->returnValue( true )); $driver = new TestFileDriver($locator); $driver->setGlobalBasename("global"); $this->assertFalse($driver->isTransient('stdClass')); $this->assertFalse($driver->isTransient('stdGlobal')); $this->assertFalse($driver->isTransient('stdGlobal2')); } public function testIsTransient() { $locator = $this->newLocator(); $locator->expects($this->once()) ->method('fileExists') ->with($this->equalTo('stdClass2')) ->will($this->returnValue( false )); $driver = new TestFileDriver($locator); $this->assertTrue($driver->isTransient('stdClass2')); } public function testNonLocatorFallback() { $driver = new TestFileDriver(__DIR__ . '/_files', '.yml'); $this->assertTrue($driver->isTransient('stdClass2')); $this->assertFalse($driver->isTransient('stdClass')); } private function newLocator() { $locator = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\FileLocator'); $locator->expects($this->any())->method('getFileExtension')->will($this->returnValue('.yml')); $locator->expects($this->any())->method('getPaths')->will($this->returnValue(array(__DIR__ . "/_files"))); return $locator; } } class TestFileDriver extends FileDriver { protected function loadMappingFile($file) { if (strpos($file, "global.yml") !== false) { return array('stdGlobal' => 'stdGlobal', 'stdGlobal2' => 'stdGlobal2'); } return array('stdClass' => 'stdClass'); } public function loadMetadataForClass($className, ClassMetadata $metadata) { } }