mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-12-25 16:06:10 +01:00
125 lines
3.1 KiB
PHP
125 lines
3.1 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace TTN\Tea\Tests\Functional\Command;
|
||
|
|
||
|
use Symfony\Component\Console\Application;
|
||
|
use Symfony\Component\Console\Command\Command;
|
||
|
use Symfony\Component\Console\Tester\CommandTester;
|
||
|
use TTN\Tea\Command\CreateTestDataCommand;
|
||
|
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
|
||
|
|
||
|
/**
|
||
|
* @covers \TTN\Tea\Command\CreateTestDataCommand
|
||
|
*/
|
||
|
final class CreateTestDataCommandTest extends FunctionalTestCase
|
||
|
{
|
||
|
/**
|
||
|
* @var non-empty-string
|
||
|
*/
|
||
|
private const COMMAND_NAME = 'tea:create-test-data';
|
||
|
|
||
|
protected array $testExtensionsToLoad = ['ttn/tea'];
|
||
|
|
||
|
private CreateTestDataCommand $subject;
|
||
|
|
||
|
private CommandTester $commandTester;
|
||
|
|
||
|
protected function setUp(): void
|
||
|
{
|
||
|
parent::setUp();
|
||
|
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/Pages.csv');
|
||
|
$this->subject = new CreateTestDataCommand(self::COMMAND_NAME);
|
||
|
$application = new Application();
|
||
|
$application->add($this->subject);
|
||
|
|
||
|
$command = $application->find('tea:create-test-data');
|
||
|
$this->commandTester = new CommandTester($command);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @test
|
||
|
*/
|
||
|
public function isConsoleCommand(): void
|
||
|
{
|
||
|
self::assertInstanceOf(Command::class, $this->subject);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @test
|
||
|
*/
|
||
|
public function hasDescription(): void
|
||
|
{
|
||
|
$expected = 'Create test data for the tea extension in an already existing page (sysfolder).';
|
||
|
self::assertSame($expected, $this->subject->getHelp());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @test
|
||
|
*/
|
||
|
public function hasHelpText(): void
|
||
|
{
|
||
|
$expected = 'Create test data for the tea extension in an already existing page (sysfolder).';
|
||
|
self::assertSame($expected, $this->subject->getHelp());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @test
|
||
|
*/
|
||
|
public function runReturnsSuccessStatus(): void
|
||
|
{
|
||
|
$result = $this->commandTester->execute(
|
||
|
[
|
||
|
'pageUid' => 1,
|
||
|
],
|
||
|
);
|
||
|
|
||
|
self::assertSame(Command::SUCCESS, $result);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @test
|
||
|
*/
|
||
|
public function createsTestData(): void
|
||
|
{
|
||
|
$this->commandTester->execute([
|
||
|
'pageUid' => 1,
|
||
|
]);
|
||
|
|
||
|
$this->assertCSVDataSet(__DIR__ . '/Fixtures/Database/Teas.csv');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @test
|
||
|
*/
|
||
|
public function deletesExistingDataOnGivenPidBeforeCreatingNewData(): void
|
||
|
{
|
||
|
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/ExistingTeas.csv');
|
||
|
$this->commandTester->execute(
|
||
|
[
|
||
|
'pageUid' => 1,
|
||
|
'--delete-data-before' => true,
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$this->assertCSVDataSet(__DIR__ . '/Fixtures/Database/TeasAfterDelete.csv');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @test
|
||
|
*/
|
||
|
public function doesNotDeleteDataOnOtherPid(): void
|
||
|
{
|
||
|
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/OtherExistingTeas.csv');
|
||
|
$this->commandTester->execute(
|
||
|
[
|
||
|
'pageUid' => 1,
|
||
|
'--delete-data-before' => true,
|
||
|
]
|
||
|
);
|
||
|
|
||
|
$this->assertCSVDataSet(__DIR__ . '/Fixtures/Database/TeasAfterDeleteOtherExistingTeas.csv');
|
||
|
}
|
||
|
}
|