123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Setup\Console\Command;
- use Magento\Catalog\Model\Indexer\Product\Price\DimensionModeConfiguration;
- use Symfony\Component\Console\Tester\CommandTester;
- use Magento\Framework\Console\Cli;
- use Magento\Framework\ObjectManagerInterface;
- use Magento\TestFramework\Helper\Bootstrap;
- /**
- * Test command that sets indexer mode for catalog_product_price indexer
- */
- class PriceIndexerDimensionsModeSetCommandTest extends \Magento\TestFramework\Indexer\TestCase
- {
- /** @var ObjectManagerInterface */
- private $objectManager;
- /** @var \Magento\Indexer\Console\Command\IndexerSetDimensionsModeCommand */
- private $command;
- /** @var CommandTester */
- private $commandTester;
- /**
- * setUp
- */
- public function setUp()
- {
- $this->objectManager = Bootstrap::getObjectManager();
- $this->objectManager->get(\Magento\TestFramework\App\Config::class)->clean();
- $this->command = $this->objectManager->create(
- \Magento\Indexer\Console\Command\IndexerSetDimensionsModeCommand::class
- );
- $this->commandTester = new CommandTester($this->command);
- parent::setUp();
- }
- /**
- * setUpBeforeClass
- */
- public static function setUpBeforeClass()
- {
- $db = Bootstrap::getInstance()->getBootstrap()
- ->getApplication()
- ->getDbInstance();
- if (!$db->isDbDumpExists()) {
- throw new \LogicException('DB dump does not exist.');
- }
- $db->restoreFromDbDump();
- parent::setUpBeforeClass();
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoAppIsolation enabled
- *
- * @param string $previousMode
- * @param string $currentMode
- * @dataProvider modesDataProvider
- */
- public function testSwitchMode($previousMode, $currentMode)
- {
- $this->commandTester->execute(
- [
- 'indexer' => 'catalog_product_price',
- 'mode' => $currentMode,
- ]
- );
- $expectedOutput = 'Dimensions mode for indexer "Product Price" was changed from \''
- . $previousMode . '\' to \'' . $currentMode . '\'' . PHP_EOL;
- $actualOutput = $this->commandTester->getDisplay();
- $this->assertContains($expectedOutput, $actualOutput);
- static::assertEquals(
- Cli::RETURN_SUCCESS,
- $this->commandTester->getStatusCode(),
- $this->commandTester->getDisplay(true)
- );
- }
- /**
- * Modes data provider
- * @return array
- */
- public function modesDataProvider()
- {
- return [
- [DimensionModeConfiguration::DIMENSION_NONE, DimensionModeConfiguration::DIMENSION_WEBSITE],
- [DimensionModeConfiguration::DIMENSION_WEBSITE, DimensionModeConfiguration::DIMENSION_CUSTOMER_GROUP],
- [
- DimensionModeConfiguration::DIMENSION_CUSTOMER_GROUP,
- DimensionModeConfiguration::DIMENSION_WEBSITE_AND_CUSTOMER_GROUP
- ],
- [
- DimensionModeConfiguration::DIMENSION_WEBSITE_AND_CUSTOMER_GROUP,
- DimensionModeConfiguration::DIMENSION_NONE
- ],
- [
- DimensionModeConfiguration::DIMENSION_NONE,
- DimensionModeConfiguration::DIMENSION_WEBSITE_AND_CUSTOMER_GROUP
- ],
- [
- DimensionModeConfiguration::DIMENSION_WEBSITE_AND_CUSTOMER_GROUP,
- DimensionModeConfiguration::DIMENSION_CUSTOMER_GROUP
- ],
- [DimensionModeConfiguration::DIMENSION_CUSTOMER_GROUP, DimensionModeConfiguration::DIMENSION_WEBSITE],
- [DimensionModeConfiguration::DIMENSION_WEBSITE, DimensionModeConfiguration::DIMENSION_NONE],
- ];
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoAppIsolation enabled
- */
- public function testSwitchModeForSameMode()
- {
- $this->commandTester->execute(
- [
- 'indexer' => 'catalog_product_price',
- 'mode' => DimensionModeConfiguration::DIMENSION_NONE
- ]
- );
- $expectedOutput = 'Dimensions mode for indexer "Product Price" has not been changed' . PHP_EOL;
- $actualOutput = $this->commandTester->getDisplay();
- $this->assertContains($expectedOutput, $actualOutput);
- static::assertEquals(
- Cli::RETURN_SUCCESS,
- $this->commandTester->getStatusCode(),
- $this->commandTester->getDisplay(true)
- );
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoAppIsolation enabled
- *
- * @expectedException \InvalidArgumentException
- */
- public function testSwitchModeWithInvalidArgument()
- {
- $this->commandTester->execute(
- [
- 'indexer' => 'indexer_not_valid'
- ]
- );
- }
- }
|