100 lines
2.9 KiB
PHP
Executable File
100 lines
2.9 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Setup\Console\Command;
|
|
|
|
use Symfony\Component\Console\Tester\CommandTester;
|
|
|
|
class I18nCollectPhrasesCommandTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/**
|
|
* @var I18nCollectPhrasesCommand
|
|
*/
|
|
private $command;
|
|
|
|
/**
|
|
* @var CommandTester
|
|
*/
|
|
private $tester;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$this->command = new I18nCollectPhrasesCommand();
|
|
$this->tester = new CommandTester($this->command);
|
|
}
|
|
|
|
protected function tearDown(): void
|
|
{
|
|
$property = new \ReflectionProperty(\Magento\Setup\Module\I18n\ServiceLocator::class, '_dictionaryGenerator');
|
|
$property->setAccessible(true);
|
|
$property->setValue(null);
|
|
$property->setAccessible(false);
|
|
}
|
|
|
|
public function testExecuteConsoleOutput()
|
|
{
|
|
$this->tester->execute(
|
|
[
|
|
'directory' => BP . '/dev/tests/integration/testsuite/Magento/Setup/Console/Command/_files/',
|
|
]
|
|
);
|
|
|
|
$this->assertEquals('Dictionary successfully processed.' . PHP_EOL, $this->tester->getDisplay());
|
|
}
|
|
|
|
public function testExecuteCsvOutput()
|
|
{
|
|
$outputPath = BP . '/dev/tests/integration/testsuite/Magento/Setup/Console/Command/_files/output/phrases.csv';
|
|
$this->tester->execute(
|
|
[
|
|
'directory' => BP . '/dev/tests/integration/testsuite/Magento/Setup/Console/Command/_files/phrases/',
|
|
'--output' => $outputPath,
|
|
]
|
|
);
|
|
|
|
$handle = fopen($outputPath, 'r');
|
|
$output = fread($handle, filesize($outputPath));
|
|
$expected = file_get_contents(
|
|
BP . '/dev/tests/integration/testsuite/Magento/Setup/Console/Command/_files/expectedPhrases.csv'
|
|
);
|
|
$this->assertEquals($expected, $output);
|
|
unlink($outputPath);
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function testExecuteNonExistingPath()
|
|
{
|
|
$this->expectException(\InvalidArgumentException::class);
|
|
$this->expectExceptionMessage('Specified path doesn\'t exist');
|
|
|
|
$this->tester->execute(
|
|
[
|
|
'directory' => BP . '/dev/tests/integration/testsuite/Magento/Setup/Console/Command/_files/non_exist',
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function testExecuteMagentoFlagDirectoryPath()
|
|
{
|
|
$this->expectException(\InvalidArgumentException::class);
|
|
$this->expectExceptionMessage('Directory path is not needed when --magento flag is set.');
|
|
|
|
$this->tester->execute(['directory' => 'a', '--magento' => true]);
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function testExecuteNoMagentoFlagNoDirectoryPath()
|
|
{
|
|
$this->expectException(\InvalidArgumentException::class);
|
|
$this->expectExceptionMessage('Directory path is needed when --magento flag is not set.');
|
|
|
|
$this->tester->execute([]);
|
|
}
|
|
}
|