Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\InstallBundle\Tests\Command; | |
use Doctrine\Bundle\DoctrineBundle\Registry; | |
use Mautic\CoreBundle\Doctrine\Connection\ConnectionWrapper; | |
use Mautic\InstallBundle\Command\InstallCommand; | |
use Mautic\InstallBundle\Install\InstallService; | |
use PHPUnit\Framework\MockObject\MockObject; | |
use PHPUnit\Framework\TestCase; | |
use Symfony\Component\Console\Application; | |
use Symfony\Component\Console\Command\Command; | |
use Symfony\Component\Console\Helper\HelperSet; | |
use Symfony\Component\Console\Input\ArrayInput; | |
use Symfony\Component\Console\Input\InputDefinition; | |
use Symfony\Component\Console\Output\BufferedOutput; | |
class InstallCommandTest extends TestCase | |
{ | |
/** | |
* @var MockObject&InstallService | |
*/ | |
private MockObject $installer; | |
/** | |
* @var MockObject&Registry | |
*/ | |
private MockObject $doctrineRegistry; | |
private InstallCommand $command; | |
protected function setUp(): void | |
{ | |
parent::setUp(); | |
$this->installer = $this->createMock(InstallService::class); | |
$this->doctrineRegistry = $this->createMock(Registry::class); | |
$application = $this->createMock(Application::class); | |
$inputDefinition = $this->createMock(InputDefinition::class); | |
$command = $this->createMock(Command::class); | |
$inputDefinition->method('getOptions')->willReturn([]); | |
$inputDefinition->method('getArguments')->willReturn([]); | |
$application->method('getHelperSet')->willReturn($this->createMock(HelperSet::class)); | |
$application->method('getDefinition')->willReturn($inputDefinition); | |
$application->method('find')->willReturn($command); | |
$this->command = new InstallCommand($this->installer, $this->doctrineRegistry); | |
$this->command->setApplication($application); | |
} | |
public function testCommandWhenSiteInstalled(): void | |
{ | |
$this->installer->method('checkIfInstalled')->willReturnOnConsecutiveCalls(true); | |
$input = new ArrayInput(['site_url' => 'localhost']); | |
$output = new BufferedOutput(); | |
$this->command->run($input, $output); | |
$this->assertSame('Mautic already installed'.PHP_EOL, $output->fetch()); | |
} | |
public function testCommandWhenSiteNotInstalled(): void | |
{ | |
$this->installer->method('checkIfInstalled')->willReturnOnConsecutiveCalls(false); | |
$this->doctrineRegistry->method('getConnection')->willReturn($this->createMock(ConnectionWrapper::class)); | |
$input = new ArrayInput( | |
[ | |
'site_url' => 'localhost', | |
'--admin_firstname' => 'Admin', | |
'--admin_lastname' => 'Mautic', | |
'--admin_username' => 'admin', | |
'--admin_email' => '[email protected]', | |
'--admin_password' => 'password', | |
] | |
); | |
$output = new BufferedOutput(); | |
$this->command->run($input, $output); | |
$this->assertStringContainsString('Install complete'.PHP_EOL, $output->fetch()); | |
} | |
} | |