symfony_example_app/tests/Controller/IndexControllerTest.php

93 lines
3.1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Tests\Controller;
use App\Service\QRCodeGeneratorInterface;
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class IndexControllerTest extends WebTestCase
{
public function testFormIsPresentAfterLoadHomepage(): void
{
$client = static::createClient();
$client->request('GET', '/');
$this->assertResponseIsSuccessful();
$this->assertSelectorExists('form');
}
public function testImageIsPresentAfterSubmitForm(): void {
$client = $this->generateClientForSubmitTest();
$response = $client->request('GET', '/');
$this->assertResponseIsSuccessful();
$form = $response->selectButton('Vygenerovat QR kód')->form();
$dt = new \DateTime('now+1 hour'); // In case of 23:59:59
$client->submit($form, [
'qr_code' => [
'iban' => 'CZ5508000000001234567899',
'dueDate' => $dt->format('Y-m-d'),
'message' => 'foo',
'money' => [
'currency' => 'CZK',
'amount' => '100'
],
'paymentIdentification' => [
'variableSymbol' => '123',
'constantSymbol' => '123',
'specificSymbol' => '123'
]
]
]);
$this->assertResponseIsSuccessful();
$this->assertSelectorExists('form');
$this->assertSelectorExists('img');
}
public function testImageIsNotPresentAfterFailSubmitForm(): void {
$client = $this->generateClientForSubmitTest();
$response = $client->request('GET', '/');
$this->assertResponseIsSuccessful();
$form = $response->selectButton('Vygenerovat QR kód')->form();
$dt = new \DateTime('now+1 hour'); // In case of 23:59:59
$client->submit($form, [
'qr_code' => [
'iban' => 'IBAN_THAT_NOT_EXISTS',
'dueDate' => $dt->format('Y-m-d'),
'message' => 'foo',
'money' => [
'currency' => 'CZK',
'amount' => '100'
],
'paymentIdentification' => [
'variableSymbol' => '123',
'constantSymbol' => '123',
'specificSymbol' => '123'
]
]
]);
$this->assertResponseIsUnprocessable();
$this->assertSelectorExists('form');
$this->assertSelectorNotExists('img');
}
private function generateClientForSubmitTest(): KernelBrowser
{
$mock = $this->createMock(QRCodeGeneratorInterface::class);
$mock->expects($this->any())
->method('generateQRCodeFromEntity')
->will($this->returnValue('foo'));
$client = static::createClient();
$client->disableReboot();
self::getContainer()->set('App\Service\QRCodeGeneratorInterface', $mock);
return $client;
}
}