DelegatingLoaderTest.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
  5. *
  6. * For the full copyright and license information, please view the LICENSE
  7. * file that was distributed with this source code.
  8. */
  9. namespace Symfony\Tests\Component\Routing\Loader;
  10. use Symfony\Component\Routing\Loader\LoaderResolver;
  11. use Symfony\Component\Routing\Loader\DelegatingLoader;
  12. use Symfony\Component\Routing\Loader\XmlFileLoader;
  13. use Symfony\Component\Routing\Loader\ClosureLoader;
  14. use Symfony\Component\Routing\RouteCollection;
  15. use Symfony\Component\Routing\Route;
  16. class DelegatingLoaderTest extends \PHPUnit_Framework_TestCase
  17. {
  18. /**
  19. * @covers Symfony\Component\Routing\Loader\DelegatingLoader::__construct
  20. */
  21. public function testConstructor()
  22. {
  23. $resolver = new LoaderResolver();
  24. $loader = new DelegatingLoader($resolver);
  25. $this->assertTrue(true, '__construct() takes a loader resolver as its first argument');
  26. }
  27. /**
  28. * @covers Symfony\Component\Routing\Loader\DelegatingLoader::getResolver
  29. * @covers Symfony\Component\Routing\Loader\DelegatingLoader::setResolver
  30. */
  31. public function testGetSetResolver()
  32. {
  33. $resolver = new LoaderResolver();
  34. $loader = new DelegatingLoader($resolver);
  35. $this->assertSame($resolver, $loader->getResolver(), '->getResolver() gets the resolver loader');
  36. $loader->setResolver($resolver = new LoaderResolver());
  37. $this->assertSame($resolver, $loader->getResolver(), '->setResolver() sets the resolver loader');
  38. }
  39. /**
  40. * @covers Symfony\Component\Routing\Loader\DelegatingLoader::supports
  41. */
  42. public function testSupports()
  43. {
  44. $resolver = new LoaderResolver(array(
  45. $ini = new XmlFileLoader(array()),
  46. ));
  47. $loader = new DelegatingLoader($resolver);
  48. $this->assertTrue($loader->supports('foo.xml'), '->supports() returns true if the resource is loadable');
  49. $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
  50. }
  51. /**
  52. * @covers Symfony\Component\Routing\Loader\DelegatingLoader::load
  53. */
  54. public function testLoad()
  55. {
  56. $resolver = new LoaderResolver(array(
  57. new ClosureLoader(),
  58. ));
  59. $loader = new DelegatingLoader($resolver);
  60. $route = new Route('/');
  61. $routes = $loader->load(function () use ($route)
  62. {
  63. $routes = new RouteCollection();
  64. $routes->add('foo', $route);
  65. return $routes;
  66. });
  67. $this->assertSame($route, $routes->get('foo'), '->load() loads a resource using the loaders from the resolver');
  68. try {
  69. $loader->load('foo.foo');
  70. $this->fail('->load() throws an \InvalidArgumentException if the resource cannot be loaded');
  71. } catch (\Exception $e) {
  72. $this->assertInstanceOf('\InvalidArgumentException', $e, '->load() throws an \InvalidArgumentException if the resource cannot be loaded');
  73. }
  74. }
  75. }