GenerateFixturesCommandTest.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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\App\ObjectManagerFactory;
  8. use Magento\Framework\App\ResourceConnection;
  9. use Magento\Framework\Console\Cli;
  10. use Magento\Framework\ObjectManagerInterface;
  11. use Magento\Indexer\Console\Command\IndexerReindexCommand;
  12. use Magento\Setup\Fixtures\FixtureModel;
  13. use Magento\TestFramework\Helper\Bootstrap;
  14. use Symfony\Component\Console\Tester\CommandTester;
  15. /**
  16. * Class GenerateFixturesCommandCommandTest
  17. * @package Magento\Setup\Console\Command
  18. */
  19. class GenerateFixturesCommandTest extends \Magento\TestFramework\Indexer\TestCase
  20. {
  21. /** @var CommandTester */
  22. private $indexerCommand;
  23. /** @var FixtureModel */
  24. private $fixtureModelMock;
  25. /** @var ObjectManagerInterface */
  26. private $objectManager;
  27. /** @var GenerateFixturesCommand */
  28. private $command;
  29. /** @var CommandTester */
  30. private $commandTester;
  31. /**
  32. * Setup
  33. */
  34. public function setUp()
  35. {
  36. $this->objectManager = Bootstrap::getObjectManager();
  37. $this->objectManager->get(\Magento\TestFramework\App\Config::class)->clean();
  38. $this->fixtureModelMock = $this->getMockBuilder(FixtureModel::class)
  39. ->setMethods(['getObjectManager'])
  40. ->setConstructorArgs([$this->objectManager->get(IndexerReindexCommand::class)])
  41. ->getMock();
  42. $this->fixtureModelMock
  43. ->method('getObjectManager')
  44. ->willReturn($this->objectManager);
  45. $this->command = $this->objectManager->create(
  46. GenerateFixturesCommand::class,
  47. [
  48. 'fixtureModel' => $this->fixtureModelMock
  49. ]
  50. );
  51. $objectFactoryMock = $this->getMockBuilder(ObjectManagerFactory::class)
  52. ->setMethods(['create'])
  53. ->disableOriginalConstructor()
  54. ->getMock();
  55. $objectFactoryMock
  56. ->method('create')
  57. ->willReturn($this->objectManager);
  58. $this->indexerCommand = new CommandTester($this->objectManager->create(
  59. IndexerReindexCommand::class,
  60. ['objectManagerFactory' => $objectFactoryMock]
  61. ));
  62. $this->commandTester = new CommandTester($this->command);
  63. $this->setIncrement(3);
  64. parent::setUp();
  65. }
  66. /**
  67. * @return string
  68. */
  69. private function getEdition()
  70. {
  71. return trim(file_get_contents(__DIR__ . '/_files/edition'));
  72. }
  73. /**
  74. * teardown
  75. */
  76. public function tearDown()
  77. {
  78. $this->setIncrement(1);
  79. parent::tearDown();
  80. }
  81. public static function setUpBeforeClass()
  82. {
  83. $db = Bootstrap::getInstance()->getBootstrap()
  84. ->getApplication()
  85. ->getDbInstance();
  86. if (!$db->isDbDumpExists()) {
  87. throw new \LogicException('DB dump does not exist.');
  88. }
  89. $db->restoreFromDbDump();
  90. parent::setUpBeforeClass();
  91. }
  92. /**
  93. * @magentoAppArea adminhtml
  94. * @magentoAppIsolation enabled
  95. */
  96. public function testExecute()
  97. {
  98. $profile = BP . "/setup/performance-toolkit/profiles/{$this->getEdition()}/small.xml";
  99. $this->commandTester->execute(
  100. [
  101. GenerateFixturesCommand::PROFILE_ARGUMENT => $profile,
  102. '--' . GenerateFixturesCommand::SKIP_REINDEX_OPTION => true
  103. ]
  104. );
  105. $this->indexerCommand->execute([]);
  106. static::assertEquals(
  107. Cli::RETURN_SUCCESS,
  108. $this->indexerCommand->getStatusCode(),
  109. $this->indexerCommand->getDisplay(true)
  110. );
  111. static::assertEquals(
  112. Cli::RETURN_SUCCESS,
  113. $this->commandTester->getStatusCode(),
  114. $this->commandTester->getDisplay(true)
  115. );
  116. }
  117. /**
  118. * @param $value
  119. */
  120. private function setIncrement($value)
  121. {
  122. /** @var \Magento\Framework\DB\Adapter\AdapterInterface $db */
  123. $db = Bootstrap::getObjectManager()->get(ResourceConnection::class)->getConnection();
  124. $db->query("SET @@session.auto_increment_increment=$value");
  125. $db->query("SET @@session.auto_increment_offset=$value");
  126. }
  127. }