FileSystemTest.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View;
  7. use \Magento\TestFramework\Helper\Bootstrap;
  8. /**
  9. * Tests for the view layer fallback mechanism
  10. * @magentoComponentsDir Magento/Theme/Model/_files/design
  11. * @magentoDbIsolation enabled
  12. */
  13. class FileSystemTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /**
  16. * @var \Magento\Framework\View\FileSystem
  17. */
  18. protected $_model = null;
  19. protected function setUp()
  20. {
  21. $objectManager = Bootstrap::getObjectManager();
  22. /** @var \Magento\Theme\Model\Theme\Registration $registration */
  23. $registration = $objectManager->get(
  24. \Magento\Theme\Model\Theme\Registration::class
  25. );
  26. $registration->register();
  27. $objectManager->get(\Magento\Framework\App\State::class)->setAreaCode('frontend');
  28. $this->_model = $objectManager->create(
  29. \Magento\Framework\View\FileSystem::class
  30. );
  31. $objectManager->get(
  32. \Magento\Framework\View\DesignInterface::class
  33. )->setDesignTheme(
  34. 'Test_FrameworkThemeTest/default'
  35. );
  36. }
  37. public function testGetTemplateFileName()
  38. {
  39. $expected = '%s/frontend/Test/default/Magento_Catalog/templates/theme_template.phtml';
  40. $actual = $this->_model->getTemplateFileName('Magento_Catalog::theme_template.phtml', []);
  41. $this->_testExpectedVersusActualFilename($expected, $actual);
  42. }
  43. public function testGetFileNameAccordingToLocale()
  44. {
  45. $expected = '%s/frontend/Test/default/web/i18n/fr_FR/logo.gif';
  46. $actual = $this->_model->getStaticFileName('logo.gif', ['locale' => 'fr_FR']);
  47. $this->_testExpectedVersusActualFilename($expected, $actual);
  48. }
  49. /**
  50. * @magentoComponentsDir Magento/Framework/View/_files/Fixture_Module
  51. */
  52. public function testGetViewFile()
  53. {
  54. $expected = '%s/frontend/Vendor/custom_theme/Fixture_Module/web/fixture_script.js';
  55. $params = ['theme' => 'Vendor_FrameworkThemeTest/custom_theme'];
  56. $actual = $this->_model->getStaticFileName('Fixture_Module::fixture_script.js', $params);
  57. $this->_testExpectedVersusActualFilename($expected, $actual);
  58. }
  59. /**
  60. * Tests expected vs actual found fallback filename
  61. *
  62. * @param string $expected
  63. * @param string $actual
  64. */
  65. protected function _testExpectedVersusActualFilename($expected, $actual)
  66. {
  67. $this->assertStringMatchesFormat($expected, $actual);
  68. $this->assertFileExists($actual);
  69. }
  70. }