DependenciesShowModulesCircularCommandTest.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Setup\Console\Command;
  7. use Magento\Framework\Component\ComponentRegistrar;
  8. use Symfony\Component\Console\Tester\CommandTester;
  9. class DependenciesShowModulesCircularCommandTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var DependenciesShowModulesCircularCommand
  13. */
  14. private $command;
  15. /**
  16. * @var CommandTester
  17. */
  18. private $commandTester;
  19. public function setUp()
  20. {
  21. $modules = [
  22. 'Magento_A' => __DIR__ . '/_files/root/app/code/Magento/A',
  23. 'Magento_B' => __DIR__ . '/_files/root/app/code/Magento/B'
  24. ];
  25. $objectManagerProvider = $this->createMock(\Magento\Setup\Model\ObjectManagerProvider::class);
  26. $objectManager = $this->createMock(\Magento\Framework\App\ObjectManager::class);
  27. $objectManagerProvider->expects($this->once())->method('get')->willReturn($objectManager);
  28. $themePackageListMock = $this->createMock(\Magento\Framework\View\Design\Theme\ThemePackageList::class);
  29. $componentRegistrarMock = $this->createMock(\Magento\Framework\Component\ComponentRegistrar::class);
  30. $componentRegistrarMock->expects($this->any())->method('getPaths')->will($this->returnValue($modules));
  31. $dirSearchMock = $this->createMock(\Magento\Framework\Component\DirSearch::class);
  32. $objectManager->expects($this->any())->method('get')->will($this->returnValueMap([
  33. [\Magento\Framework\View\Design\Theme\ThemePackageList::class, $themePackageListMock],
  34. [\Magento\Framework\Component\ComponentRegistrar::class, $componentRegistrarMock],
  35. [\Magento\Framework\Component\DirSearch::class, $dirSearchMock]
  36. ]));
  37. $this->command = new DependenciesShowModulesCircularCommand($objectManagerProvider);
  38. $this->commandTester = new CommandTester($this->command);
  39. }
  40. public function tearDown()
  41. {
  42. if (file_exists(__DIR__ . '/_files/output/circular.csv')) {
  43. unlink(__DIR__ . '/_files/output/circular.csv');
  44. }
  45. }
  46. public function testExecute()
  47. {
  48. $this->commandTester->execute(
  49. ['--output' => __DIR__ . '/_files/output/circular.csv']
  50. );
  51. $this->assertEquals('Report successfully processed.' . PHP_EOL, $this->commandTester->getDisplay());
  52. $fileContents = file_get_contents(__DIR__ . '/_files/output/circular.csv');
  53. $this->assertContains(
  54. '"Circular dependencies:","Total number of chains"' . PHP_EOL . ',2' . PHP_EOL,
  55. $fileContents
  56. );
  57. $this->assertContains('"Circular dependencies for each module:",' . PHP_EOL, $fileContents);
  58. $this->assertContains(
  59. 'magento/module-a,1' . PHP_EOL . 'magento/module-a->magento/module-b->magento/module-a' . PHP_EOL,
  60. $fileContents
  61. );
  62. $this->assertContains(
  63. 'magento/module-b,1' . PHP_EOL . 'magento/module-b->magento/module-a->magento/module-b' . PHP_EOL,
  64. $fileContents
  65. );
  66. }
  67. }