6 declare(strict_types=1);
11 use Symfony\Component\Console\Tester\CommandTester;
32 private $configReaderMock;
37 private $dimensionProviders;
42 private $dimensionModeSwitcherMock;
52 private $dimensionModes;
60 $objectManagerHelper =
new ObjectManagerHelper($this);
61 $this->configReaderMock = $this->createMock(ScopeConfigInterface::class);
62 $this->dimensionModeSwitcherMock =
63 $this->createMock(\
Magento\Indexer\Model\ModeSwitcherInterface::class);
64 $this->dimensionProviders = [
65 'indexer_title' => $this->dimensionModeSwitcherMock,
67 $this->dimensionModes = $this->createMock(\
Magento\Indexer\Model\DimensionModes::class);
68 $this->command = $objectManagerHelper->getObject(
69 IndexerSetDimensionsModeCommand::class,
71 'objectManagerFactory' => $this->objectManagerFactory,
72 'configReader' => $this->configReaderMock,
73 'dimensionSwitchers' => $this->dimensionProviders,
85 $result = parent::getObjectManagerReturnValueMap();
86 $this->indexerMock = $this->createMock(\
Magento\Indexer\Model\Indexer::class);
87 $result[] = [\Magento\Indexer\Model\Indexer::class, $this->indexerMock];
105 $commandTester =
new CommandTester($this->command);
106 $this->dimensionModes->method(
'getDimensions')->willReturn([
107 $previousMode =>
'dimension1',
108 $command[
'mode'] =>
'dimension2',
110 $this->dimensionModeSwitcherMock->method(
'getDimensionModes')->willReturn($this->dimensionModes);
111 $this->indexerMock->method(
'load')->willReturnSelf();
112 $this->indexerMock->method(
'getTitle')->willReturn($indexerTitle);
113 $commandTester->execute($command);
114 $actualValue = $commandTester->getDisplay();
128 'indexer_title' =>
'indexer_title',
129 'previousMode' =>
'none',
131 'indexer' =>
'indexer_title',
136 'Dimensions mode for indexer "%s" was changed from \'%s\' to \'%s\'',
143 'was_not_changed' => [
144 'indexer_title' =>
'indexer_title',
145 'previousMode' =>
'none',
147 'indexer' =>
'indexer_title',
152 'Dimensions mode for indexer "%s" has not been changed',
170 $commandTester =
new CommandTester($this->command);
171 $this->indexerMock->method(
'getTitle')->willReturn(
'indexer_title');
172 $commandTester->execute([
'indexer' =>
'non_existing_title']);
184 $commandTester =
new CommandTester($this->command);
185 $this->dimensionModes->method(
'getDimensions')->willReturn([
186 'store' =>
'dimension1',
187 'website' =>
'dimension2',
189 $this->dimensionModeSwitcherMock->method(
'getDimensionModes')->willReturn($this->dimensionModes);
190 $this->indexerMock->method(
'getTitle')->willReturn(
'indexer_title');
191 $commandTester->execute([
192 'indexer' =>
'indexer_title',
203 $indexerTitle =
'indexer_title';
205 'store' =>
'dimension1',
206 'website' =>
'dimension2',
209 $commandTester =
new CommandTester($this->command);
210 $this->indexerMock->method(
'getTitle')->willReturn($indexerTitle);
211 $this->dimensionModes->method(
'getDimensions')->willReturn($modesConfig);
212 $this->dimensionModeSwitcherMock->method(
'getDimensionModes')->willReturn($this->dimensionModes);
213 $commandTester->execute([]);
214 $actualValue = $commandTester->getDisplay();
215 $consoleOutput = sprintf(
'%-50s',
'Indexer') .
'Available modes' . PHP_EOL
216 . sprintf(
'%-50s', $indexerTitle) .
'store,website' . PHP_EOL;
dimensionModesDataProvider()
testExecuteWithAttributes($indexerTitle, $previousMode, $command, $consoleOutput)
getObjectManagerReturnValueMap()
testExecuteWithNoArguments()
testExecuteWithIndxerException()
testExecuteWithModeException()