Spaces:
No application file
No application file
File size: 3,399 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
<?php
declare(strict_types=1);
namespace Mautic\CoreBundle\Tests\Command;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\Psr7\Response;
use Mautic\CoreBundle\Command\PullTransifexCommand;
use Mautic\CoreBundle\Helper\Filesystem;
use Mautic\CoreBundle\Test\MauticMysqlTestCase;
use PHPUnit\Framework\Assert;
use Symfony\Component\HttpFoundation\Response as SymfonyResponse;
class PullTransifexCommandFunctionalTest extends MauticMysqlTestCase
{
private const FAKE_TRANSLATION_DIR = __DIR__.'/../Fixtures/Transifex/Translations';
private Filesystem $filesystem;
protected function setUp(): void
{
$this->configParams['transifex_api_token'] = 'some_api_token';
parent::setUp();
$this->filesystem = static::getContainer()->get('mautic.filesystem');
$this->filesystem->mkdir(self::FAKE_TRANSLATION_DIR);
}
public function testPullCommand(): void
{
Assert::assertFalse($this->filesystem->exists(self::FAKE_TRANSLATION_DIR.'/cs'), 'Translations directory already exist');
// Using the same translation for both file as we don't know which response will be processed first.
$someTranslation = 'some.translation="Some translation"';
$handlerStack = static::getContainer()->get(MockHandler::class);
$handlerStack->append(
// Fetches all languages for webhook's messages.ini
new Response(SymfonyResponse::HTTP_OK, [], file_get_contents(__DIR__.'/../Fixtures/Transifex/language-stats.json')),
// Creates the download request for webhook's messages.ini
new Response(SymfonyResponse::HTTP_OK, [], file_get_contents(__DIR__.'/../Fixtures/Transifex/translation-download.json')),
// Fetches all languages for webhook's flashes.ini
new Response(SymfonyResponse::HTTP_OK, [], file_get_contents(__DIR__.'/../Fixtures/Transifex/language-stats.json')),
// Creates the download request for webhook's flashes.ini
new Response(SymfonyResponse::HTTP_OK, [], file_get_contents(__DIR__.'/../Fixtures/Transifex/translation-download.json')),
// Fetches the webhook's messages.ini content
new Response(SymfonyResponse::HTTP_OK, [], $someTranslation),
// Fetches the webhook's flashes.ini content
new Response(SymfonyResponse::HTTP_OK, [], $someTranslation),
);
$commandTester = $this->testSymfonyCommand(PullTransifexCommand::NAME, ['--bundle' => 'WebhookBundle', '--language' => 'cs', '--path' => realpath(self::FAKE_TRANSLATION_DIR)]);
Assert::assertSame(0, $commandTester->getStatusCode(), $commandTester->getDisplay());
Assert::assertTrue($this->filesystem->exists(self::FAKE_TRANSLATION_DIR.'/cs'));
Assert::assertTrue($this->filesystem->exists(self::FAKE_TRANSLATION_DIR.'/cs/WebhookBundle/messages.ini'));
Assert::assertTrue($this->filesystem->exists(self::FAKE_TRANSLATION_DIR.'/cs/WebhookBundle/flashes.ini'));
Assert::assertSame($someTranslation, $this->filesystem->readFile(self::FAKE_TRANSLATION_DIR.'/cs/WebhookBundle/messages.ini'));
Assert::assertSame($someTranslation, $this->filesystem->readFile(self::FAKE_TRANSLATION_DIR.'/cs/WebhookBundle/flashes.ini'));
}
protected function beforeTearDown(): void
{
$this->filesystem->remove(self::FAKE_TRANSLATION_DIR);
}
}
|