You are here

FileDriverTest.php in Plug 7

File

lib/doctrine/common/tests/Doctrine/Tests/Common/Persistence/Mapping/FileDriverTest.php
View source
<?php

namespace Doctrine\Tests\Common\Persistence\Mapping;

use Doctrine\Tests\DoctrineTestCase;
use Doctrine\Common\Persistence\Mapping\Driver\FileDriver;
use Doctrine\Common\Persistence\Mapping\ClassMetadata;
class FileDriverTest extends DoctrineTestCase {
  public function testGlobalBasename() {
    $driver = new TestFileDriver(array());
    $this
      ->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) {
  }

}

Classes