ReverseResolverTest.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Module\Test\Unit\Dir;
  7. class ReverseResolverTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Framework\Module\Dir\ReverseResolver
  11. */
  12. protected $_model;
  13. /**
  14. * @var \Magento\Framework\Module\ModuleListInterface|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $_moduleList;
  17. /**
  18. * @var \Magento\Framework\Module\Dir|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $_moduleDirs;
  21. protected function setUp()
  22. {
  23. $this->_moduleList = $this->createMock(\Magento\Framework\Module\ModuleListInterface::class);
  24. $this->_moduleDirs = $this->createMock(\Magento\Framework\Module\Dir::class);
  25. $this->_model = new \Magento\Framework\Module\Dir\ReverseResolver($this->_moduleList, $this->_moduleDirs);
  26. }
  27. /**
  28. * @param string $path
  29. * @param string $expectedResult
  30. * @dataProvider getModuleNameDataProvider
  31. */
  32. public function testGetModuleName($path, $expectedResult)
  33. {
  34. $this->_moduleList->expects($this->once())->method('getNames')->will(
  35. $this->returnValue(['Fixture_ModuleOne', 'Fixture_ModuleTwo'])
  36. );
  37. $this->_moduleDirs->expects(
  38. $this->atLeastOnce()
  39. )->method(
  40. 'getDir'
  41. )->will(
  42. $this->returnValueMap(
  43. [
  44. ['Fixture_ModuleOne', '', 'app/code/Fixture/ModuleOne'],
  45. ['Fixture_ModuleTwo', '', 'app/code/Fixture/ModuleTwo'],
  46. ]
  47. )
  48. );
  49. $this->assertSame($expectedResult, $this->_model->getModuleName($path));
  50. }
  51. /**
  52. * @return array
  53. */
  54. public function getModuleNameDataProvider()
  55. {
  56. return [
  57. 'module root dir' => ['app/code/Fixture/ModuleOne', 'Fixture_ModuleOne'],
  58. 'module root dir trailing slash' => ['app/code/Fixture/ModuleOne/', 'Fixture_ModuleOne'],
  59. 'module root dir backward slash' => ['app/code\\Fixture\\ModuleOne', 'Fixture_ModuleOne'],
  60. 'dir in module' => ['app/code/Fixture/ModuleTwo/etc', 'Fixture_ModuleTwo'],
  61. 'dir in module trailing slash' => ['app/code/Fixture/ModuleTwo/etc/', 'Fixture_ModuleTwo'],
  62. 'dir in module backward slash' => ['app/code/Fixture/ModuleTwo\\etc', 'Fixture_ModuleTwo'],
  63. 'file in module' => ['app/code/Fixture/ModuleOne/etc/config.xml', 'Fixture_ModuleOne'],
  64. 'file in module backward slash' => [
  65. 'app\\code\\Fixture\\ModuleOne\\etc\\config.xml',
  66. 'Fixture_ModuleOne',
  67. ],
  68. 'unknown module' => ['app/code/Unknown/Module', null]
  69. ];
  70. }
  71. }