93 lines
3.1 KiB
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;
|
||
|
}
|
||
|
}
|