CssResolverTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View\Test\Unit\Url;
  7. use \Magento\Framework\View\Url\CssResolver;
  8. class CssResolverTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\Framework\View\Url\CssResolver
  12. */
  13. protected $object;
  14. protected function setUp()
  15. {
  16. $this->object = new CssResolver();
  17. }
  18. public function testRelocateRelativeUrls()
  19. {
  20. $relatedPath = '/some/directory/two/another/file.ext';
  21. $filePath = '/some/directory/one/file.ext';
  22. $fixturePath = __DIR__ . '/_files/';
  23. $source = file_get_contents($fixturePath . 'source.css');
  24. $result = file_get_contents($fixturePath . 'resultNormalized.css');
  25. $this->assertEquals($result, $this->object->relocateRelativeUrls($source, $relatedPath, $filePath));
  26. }
  27. /**
  28. * @param string $cssContent
  29. * @param string $expectedResult
  30. * @dataProvider aggregateImportDirectivesDataProvider
  31. */
  32. public function testAggregateImportDirectives($cssContent, $expectedResult)
  33. {
  34. $this->assertEquals($expectedResult, $this->object->aggregateImportDirectives($cssContent));
  35. }
  36. /**
  37. * @return array
  38. */
  39. public function aggregateImportDirectivesDataProvider()
  40. {
  41. $fixturePath = __DIR__ . '/_files/';
  42. $source = file_get_contents($fixturePath . 'sourceImport.css');
  43. $result = file_get_contents($fixturePath . 'resultImport.css');
  44. $sourceNoImport = 'li {background: url("https://example.com/absolute.gif");}';
  45. return [
  46. 'empty' => ['', ''],
  47. 'data without patterns' => [$sourceNoImport, $sourceNoImport],
  48. 'data with patterns' => [$source, $result]
  49. ];
  50. }
  51. /**
  52. * @param string $cssContent
  53. * @param callback $inlineCallback
  54. * @param string $expectedResult
  55. * @dataProvider replaceRelativeUrlsDataProvider
  56. */
  57. public function testReplaceRelativeUrls($cssContent, $inlineCallback, $expectedResult)
  58. {
  59. $actual = $this->object->replaceRelativeUrls($cssContent, $inlineCallback);
  60. $this->assertEquals($expectedResult, $actual);
  61. }
  62. /**
  63. * @return array
  64. */
  65. public static function replaceRelativeUrlsDataProvider()
  66. {
  67. $fixturePath = __DIR__ . '/_files/';
  68. $callback = '\Magento\Framework\View\Test\Unit\Url\CssResolverTest::replaceRelativeUrl';
  69. $source = file_get_contents($fixturePath . 'source.css');
  70. $result = file_get_contents($fixturePath . 'result.css');
  71. $sourceNoPatterns = 'li {background: url("https://example.com/absolute.gif");}';
  72. return [
  73. 'empty' => ['', '\Magento\Framework\View\Test\Unit\Url\CssResolverTest::doNothing', ''],
  74. 'data without patterns' => [$sourceNoPatterns, $callback, $sourceNoPatterns],
  75. 'data with patterns' => [$source, $callback, $result]
  76. ];
  77. }
  78. /**
  79. * A callback for testing replacing relative URLs
  80. *
  81. * @param string $relativeUrl
  82. * @return string
  83. */
  84. public static function replaceRelativeUrl($relativeUrl)
  85. {
  86. return '../two/another/' . $relativeUrl;
  87. }
  88. /**
  89. * A dummy callback for testing replacing relative URLs
  90. */
  91. public static function doNothing()
  92. {
  93. // do nothing
  94. }
  95. }