tests: add IndexController tests
This commit is contained in:
		
							parent
							
								
									3cb6f7488f
								
							
						
					
					
						commit
						3182dd93cf
					
				
							
								
								
									
										12
									
								
								config/services_test.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								config/services_test.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
services:
 | 
			
		||||
  # default configuration for services in *this* file
 | 
			
		||||
  _defaults:
 | 
			
		||||
    autowire: true      # Automatically injects dependencies in your services.
 | 
			
		||||
    autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
 | 
			
		||||
    public: true
 | 
			
		||||
 | 
			
		||||
  App\Service\QRCodeGeneratorInterface:
 | 
			
		||||
    lazy: true
 | 
			
		||||
    public: true
 | 
			
		||||
  # add more service definitions when explicit configuration is needed
 | 
			
		||||
  # please note that last definitions always *replace* previous ones
 | 
			
		||||
							
								
								
									
										92
									
								
								tests/Controller/IndexControllerTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								tests/Controller/IndexControllerTest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,92 @@
 | 
			
		||||
<?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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user