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;
 | 
						|
    }
 | 
						|
}
 |