PathPackageTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\Asset\Tests;
  11. use Symfony\Component\Asset\PathPackage;
  12. use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
  13. class PathPackageTest extends \PHPUnit_Framework_TestCase
  14. {
  15. /**
  16. * @dataProvider getConfigs
  17. */
  18. public function testGetUrl($basePath, $format, $path, $expected)
  19. {
  20. $package = new PathPackage($basePath, new StaticVersionStrategy('v1', $format));
  21. $this->assertEquals($expected, $package->getUrl($path));
  22. }
  23. public function getConfigs()
  24. {
  25. return array(
  26. array('/foo', '', 'http://example.com/foo', 'http://example.com/foo'),
  27. array('/foo', '', 'https://example.com/foo', 'https://example.com/foo'),
  28. array('/foo', '', '//example.com/foo', '//example.com/foo'),
  29. array('', '', '/foo', '/foo?v1'),
  30. array('/foo', '', '/foo', '/foo/foo?v1'),
  31. array('/foo', '', 'foo', '/foo/foo?v1'),
  32. array('foo', '', 'foo', '/foo/foo?v1'),
  33. array('foo/', '', 'foo', '/foo/foo?v1'),
  34. array('/foo/', '', 'foo', '/foo/foo?v1'),
  35. array('/foo', 'version-%2$s/%1$s', '/foo', '/foo/version-v1/foo'),
  36. array('/foo', 'version-%2$s/%1$s', 'foo', '/foo/version-v1/foo'),
  37. array('/foo', 'version-%2$s/%1$s', 'foo/', '/foo/version-v1/foo/'),
  38. array('/foo', 'version-%2$s/%1$s', '/foo/', '/foo/version-v1/foo/'),
  39. );
  40. }
  41. /**
  42. * @dataProvider getContextConfigs
  43. */
  44. public function testGetUrlWithContext($basePathRequest, $basePath, $format, $path, $expected)
  45. {
  46. $package = new PathPackage($basePath, new StaticVersionStrategy('v1', $format), $this->getContext($basePathRequest));
  47. $this->assertEquals($expected, $package->getUrl($path));
  48. }
  49. public function getContextConfigs()
  50. {
  51. return array(
  52. array('', '/foo', '', '/foo', '/foo/foo?v1'),
  53. array('', '/foo', '', 'foo', '/foo/foo?v1'),
  54. array('', 'foo', '', 'foo', '/foo/foo?v1'),
  55. array('', 'foo/', '', 'foo', '/foo/foo?v1'),
  56. array('', '/foo/', '', 'foo', '/foo/foo?v1'),
  57. array('/bar', '/foo', '', '/foo', '/bar/foo/foo?v1'),
  58. array('/bar', '/foo', '', 'foo', '/bar/foo/foo?v1'),
  59. array('/bar', 'foo', '', 'foo', '/bar/foo/foo?v1'),
  60. array('/bar', 'foo/', '', 'foo', '/bar/foo/foo?v1'),
  61. array('/bar', '/foo/', '', 'foo', '/bar/foo/foo?v1'),
  62. );
  63. }
  64. private function getContext($basePath)
  65. {
  66. $context = $this->getMock('Symfony\Component\Asset\Context\ContextInterface');
  67. $context->expects($this->any())->method('getBasePath')->will($this->returnValue($basePath));
  68. return $context;
  69. }
  70. }