ReaderTest.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. /**
  8. * Test class for \Magento\Framework\Module\Dir\File
  9. */
  10. namespace Magento\Framework\Module\Test\Unit\Dir;
  11. use Magento\Framework\Config\FileIteratorFactory;
  12. use Magento\Framework\Module\Dir;
  13. class ReaderTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /**
  16. * @var \Magento\Framework\Module\Dir\Reader
  17. */
  18. protected $_model;
  19. /**
  20. * @var \PHPUnit_Framework_MockObject_MockObject
  21. */
  22. protected $_moduleListMock;
  23. /**
  24. * @var \PHPUnit_Framework_MockObject_MockObject
  25. */
  26. protected $_protFactoryMock;
  27. /**
  28. * @var \PHPUnit_Framework_MockObject_MockObject
  29. */
  30. protected $_dirsMock;
  31. /**
  32. * @var \PHPUnit_Framework_MockObject_MockObject
  33. */
  34. protected $_baseConfigMock;
  35. /**
  36. * @var \PHPUnit_Framework_MockObject_MockObject
  37. */
  38. protected $_fileIteratorFactory;
  39. /**
  40. * @var \PHPUnit_Framework_MockObject_MockObject
  41. */
  42. protected $directoryReadFactoryMock;
  43. protected function setUp()
  44. {
  45. $this->_protFactoryMock = $this->createMock(\Magento\Framework\App\Config\BaseFactory::class);
  46. $this->_dirsMock = $this->createMock(\Magento\Framework\Module\Dir::class);
  47. $this->_baseConfigMock = $this->createMock(\Magento\Framework\App\Config\Base::class);
  48. $this->_moduleListMock = $this->createMock(\Magento\Framework\Module\ModuleListInterface::class);
  49. $this->directoryReadFactoryMock = $this->createMock(\Magento\Framework\Filesystem\Directory\ReadFactory::class);
  50. $this->_fileIteratorFactory = $this->createMock(\Magento\Framework\Config\FileIteratorFactory::class);
  51. $this->_model = new \Magento\Framework\Module\Dir\Reader(
  52. $this->_dirsMock,
  53. $this->_moduleListMock,
  54. $this->_fileIteratorFactory,
  55. $this->directoryReadFactoryMock
  56. );
  57. }
  58. public function testGetModuleDirWhenCustomDirIsNotSet()
  59. {
  60. $this->_dirsMock->expects(
  61. $this->any()
  62. )->method(
  63. 'getDir'
  64. )->with(
  65. 'Test_Module',
  66. 'etc'
  67. )->will(
  68. $this->returnValue('app/code/Test/Module/etc')
  69. );
  70. $this->assertEquals(
  71. 'app/code/Test/Module/etc',
  72. $this->_model->getModuleDir(Dir::MODULE_ETC_DIR, 'Test_Module')
  73. );
  74. }
  75. public function testGetModuleDirWhenCustomDirIsSet()
  76. {
  77. $moduleDir = 'app/code/Test/Module/etc/custom';
  78. $this->_dirsMock->expects($this->never())->method('getDir');
  79. $this->_model->setModuleDir('Test_Module', 'etc', $moduleDir);
  80. $this->assertEquals($moduleDir, $this->_model->getModuleDir(Dir::MODULE_ETC_DIR, 'Test_Module'));
  81. }
  82. public function testGetConfigurationFiles()
  83. {
  84. $configPath = 'app/code/Test/Module/etc/config.xml';
  85. $modulesDirectoryMock = $this->createMock(\Magento\Framework\Filesystem\Directory\ReadInterface::class);
  86. $modulesDirectoryMock->expects($this->any())->method('getRelativePath')->will($this->returnArgument(0));
  87. $modulesDirectoryMock->expects($this->any())->method('isExist')
  88. ->with($configPath)
  89. ->will($this->returnValue(true));
  90. $this->directoryReadFactoryMock->expects($this->any())
  91. ->method('create')
  92. ->will($this->returnValue($modulesDirectoryMock));
  93. $this->_moduleListMock->expects($this->once())->method('getNames')->will($this->returnValue(['Test_Module']));
  94. $model = new \Magento\Framework\Module\Dir\Reader(
  95. $this->_dirsMock,
  96. $this->_moduleListMock,
  97. new FileIteratorFactory(
  98. new \Magento\Framework\Filesystem\File\ReadFactory(new \Magento\Framework\Filesystem\DriverPool())
  99. ),
  100. $this->directoryReadFactoryMock
  101. );
  102. $model->setModuleDir('Test_Module', 'etc', 'app/code/Test/Module/etc');
  103. $this->assertEquals($configPath, $model->getConfigurationFiles('config.xml')->key());
  104. }
  105. public function testGetComposerJsonFiles()
  106. {
  107. $configPath = 'app/code/Test/Module/composer.json';
  108. $modulesDirectoryMock = $this->createMock(\Magento\Framework\Filesystem\Directory\ReadInterface::class);
  109. $modulesDirectoryMock->expects($this->any())->method('getRelativePath')->will($this->returnArgument(0));
  110. $modulesDirectoryMock->expects($this->any())->method('isExist')
  111. ->with($configPath)
  112. ->will($this->returnValue(true));
  113. $this->directoryReadFactoryMock->expects($this->any())
  114. ->method('create')
  115. ->will($this->returnValue($modulesDirectoryMock));
  116. $this->_moduleListMock->expects($this->once())->method('getNames')->will($this->returnValue(['Test_Module']));
  117. $model = new \Magento\Framework\Module\Dir\Reader(
  118. $this->_dirsMock,
  119. $this->_moduleListMock,
  120. new FileIteratorFactory(
  121. new \Magento\Framework\Filesystem\File\ReadFactory(new \Magento\Framework\Filesystem\DriverPool())
  122. ),
  123. $this->directoryReadFactoryMock
  124. );
  125. $model->setModuleDir('Test_Module', '', 'app/code/Test/Module');
  126. $this->assertEquals($configPath, $model->getComposerJsonFiles()->key());
  127. }
  128. }