You are here

class XmlFileLoaderTest in Zircon Profile 8

Same name in this branch
  1. 8 vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php \Symfony\Component\Routing\Tests\Loader\XmlFileLoaderTest
  2. 8 vendor/symfony/dependency-injection/Tests/Loader/XmlFileLoaderTest.php \Symfony\Component\DependencyInjection\Tests\Loader\XmlFileLoaderTest
  3. 8 vendor/symfony/validator/Tests/Mapping/Loader/XmlFileLoaderTest.php \Symfony\Component\Validator\Tests\Mapping\Loader\XmlFileLoaderTest
  4. 8 vendor/symfony/serializer/Tests/Mapping/Loader/XmlFileLoaderTest.php \Symfony\Component\Serializer\Tests\Mapping\Loader\XmlFileLoaderTest
Same name and namespace in other branches
  1. 8.0 vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php \Symfony\Component\Routing\Tests\Loader\XmlFileLoaderTest

Hierarchy

  • class \Symfony\Component\Routing\Tests\Loader\XmlFileLoaderTest extends \Symfony\Component\Routing\Tests\Loader\PHPUnit_Framework_TestCase

Expanded class hierarchy of XmlFileLoaderTest

File

vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php, line 18

Namespace

Symfony\Component\Routing\Tests\Loader
View source
class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase {
  public function testSupports() {
    $loader = new XmlFileLoader($this
      ->getMock('Symfony\\Component\\Config\\FileLocator'));
    $this
      ->assertTrue($loader
      ->supports('foo.xml'), '->supports() returns true if the resource is loadable');
    $this
      ->assertFalse($loader
      ->supports('foo.foo'), '->supports() returns true if the resource is loadable');
    $this
      ->assertTrue($loader
      ->supports('foo.xml', 'xml'), '->supports() checks the resource type if specified');
    $this
      ->assertFalse($loader
      ->supports('foo.xml', 'foo'), '->supports() checks the resource type if specified');
  }
  public function testLoadWithRoute() {
    $loader = new XmlFileLoader(new FileLocator(array(
      __DIR__ . '/../Fixtures',
    )));
    $routeCollection = $loader
      ->load('validpattern.xml');
    $route = $routeCollection
      ->get('blog_show');
    $this
      ->assertInstanceOf('Symfony\\Component\\Routing\\Route', $route);
    $this
      ->assertSame('/blog/{slug}', $route
      ->getPath());
    $this
      ->assertSame('{locale}.example.com', $route
      ->getHost());
    $this
      ->assertSame('MyBundle:Blog:show', $route
      ->getDefault('_controller'));
    $this
      ->assertSame('\\w+', $route
      ->getRequirement('locale'));
    $this
      ->assertSame('RouteCompiler', $route
      ->getOption('compiler_class'));
    $this
      ->assertEquals(array(
      'GET',
      'POST',
      'PUT',
      'OPTIONS',
    ), $route
      ->getMethods());
    $this
      ->assertEquals(array(
      'https',
    ), $route
      ->getSchemes());
    $this
      ->assertEquals('context.getMethod() == "GET"', $route
      ->getCondition());
  }

  /**
   * @group legacy
   */
  public function testLegacyRouteDefinitionLoading() {
    $loader = new XmlFileLoader(new FileLocator(array(
      __DIR__ . '/../Fixtures',
    )));
    $routeCollection = $loader
      ->load('legacy_validpattern.xml');
    $route = $routeCollection
      ->get('blog_show_legacy');
    $this
      ->assertInstanceOf('Symfony\\Component\\Routing\\Route', $route);
    $this
      ->assertSame('/blog/{slug}', $route
      ->getPath());
    $this
      ->assertSame('{locale}.example.com', $route
      ->getHost());
    $this
      ->assertSame('MyBundle:Blog:show', $route
      ->getDefault('_controller'));
    $this
      ->assertSame('\\w+', $route
      ->getRequirement('locale'));
    $this
      ->assertSame('RouteCompiler', $route
      ->getOption('compiler_class'));
    $this
      ->assertEquals(array(
      'GET',
      'POST',
      'PUT',
      'OPTIONS',
    ), $route
      ->getMethods());
    $this
      ->assertEquals(array(
      'https',
    ), $route
      ->getSchemes());
    $this
      ->assertEquals('context.getMethod() == "GET"', $route
      ->getCondition());
  }
  public function testLoadWithNamespacePrefix() {
    $loader = new XmlFileLoader(new FileLocator(array(
      __DIR__ . '/../Fixtures',
    )));
    $routeCollection = $loader
      ->load('namespaceprefix.xml');
    $this
      ->assertCount(1, $routeCollection
      ->all(), 'One route is loaded');
    $route = $routeCollection
      ->get('blog_show');
    $this
      ->assertSame('/blog/{slug}', $route
      ->getPath());
    $this
      ->assertSame('{_locale}.example.com', $route
      ->getHost());
    $this
      ->assertSame('MyBundle:Blog:show', $route
      ->getDefault('_controller'));
    $this
      ->assertSame('\\w+', $route
      ->getRequirement('slug'));
    $this
      ->assertSame('en|fr|de', $route
      ->getRequirement('_locale'));
    $this
      ->assertNull($route
      ->getDefault('slug'));
    $this
      ->assertSame('RouteCompiler', $route
      ->getOption('compiler_class'));
  }
  public function testLoadWithImport() {
    $loader = new XmlFileLoader(new FileLocator(array(
      __DIR__ . '/../Fixtures',
    )));
    $routeCollection = $loader
      ->load('validresource.xml');
    $routes = $routeCollection
      ->all();
    $this
      ->assertCount(2, $routes, 'Two routes are loaded');
    $this
      ->assertContainsOnly('Symfony\\Component\\Routing\\Route', $routes);
    foreach ($routes as $route) {
      $this
        ->assertSame('/{foo}/blog/{slug}', $route
        ->getPath());
      $this
        ->assertSame('123', $route
        ->getDefault('foo'));
      $this
        ->assertSame('\\d+', $route
        ->getRequirement('foo'));
      $this
        ->assertSame('bar', $route
        ->getOption('foo'));
      $this
        ->assertSame('', $route
        ->getHost());
      $this
        ->assertSame('context.getMethod() == "POST"', $route
        ->getCondition());
    }
  }

  /**
   * @expectedException \InvalidArgumentException
   * @dataProvider getPathsToInvalidFiles
   */
  public function testLoadThrowsExceptionWithInvalidFile($filePath) {
    $loader = new XmlFileLoader(new FileLocator(array(
      __DIR__ . '/../Fixtures',
    )));
    $loader
      ->load($filePath);
  }

  /**
   * @expectedException \InvalidArgumentException
   * @dataProvider getPathsToInvalidFiles
   */
  public function testLoadThrowsExceptionWithInvalidFileEvenWithoutSchemaValidation($filePath) {
    $loader = new CustomXmlFileLoader(new FileLocator(array(
      __DIR__ . '/../Fixtures',
    )));
    $loader
      ->load($filePath);
  }
  public function getPathsToInvalidFiles() {
    return array(
      array(
        'nonvalidnode.xml',
      ),
      array(
        'nonvalidroute.xml',
      ),
      array(
        'nonvalid.xml',
      ),
      array(
        'missing_id.xml',
      ),
      array(
        'missing_path.xml',
      ),
    );
  }

  /**
   * @expectedException \InvalidArgumentException
   * @expectedExceptionMessage Document types are not allowed.
   */
  public function testDocTypeIsNotAllowed() {
    $loader = new XmlFileLoader(new FileLocator(array(
      __DIR__ . '/../Fixtures',
    )));
    $loader
      ->load('withdoctype.xml');
  }
  public function testNullValues() {
    $loader = new XmlFileLoader(new FileLocator(array(
      __DIR__ . '/../Fixtures',
    )));
    $routeCollection = $loader
      ->load('null_values.xml');
    $route = $routeCollection
      ->get('blog_show');
    $this
      ->assertTrue($route
      ->hasDefault('foo'));
    $this
      ->assertNull($route
      ->getDefault('foo'));
    $this
      ->assertTrue($route
      ->hasDefault('bar'));
    $this
      ->assertNull($route
      ->getDefault('bar'));
    $this
      ->assertEquals('foo', $route
      ->getDefault('foobar'));
    $this
      ->assertEquals('bar', $route
      ->getDefault('baz'));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
XmlFileLoaderTest::getPathsToInvalidFiles public function
XmlFileLoaderTest::testDocTypeIsNotAllowed public function @expectedException \InvalidArgumentException @expectedExceptionMessage Document types are not allowed.
XmlFileLoaderTest::testLegacyRouteDefinitionLoading public function @group legacy
XmlFileLoaderTest::testLoadThrowsExceptionWithInvalidFile public function @expectedException \InvalidArgumentException @dataProvider getPathsToInvalidFiles
XmlFileLoaderTest::testLoadThrowsExceptionWithInvalidFileEvenWithoutSchemaValidation public function @expectedException \InvalidArgumentException @dataProvider getPathsToInvalidFiles
XmlFileLoaderTest::testLoadWithImport public function
XmlFileLoaderTest::testLoadWithNamespacePrefix public function
XmlFileLoaderTest::testLoadWithRoute public function
XmlFileLoaderTest::testNullValues public function
XmlFileLoaderTest::testSupports public function