diff --git a/config/services_test.yaml b/config/services_test.yaml new file mode 100644 index 0000000..38b9141 --- /dev/null +++ b/config/services_test.yaml @@ -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 diff --git a/tests/Controller/IndexControllerTest.php b/tests/Controller/IndexControllerTest.php new file mode 100644 index 0000000..9f98168 --- /dev/null +++ b/tests/Controller/IndexControllerTest.php @@ -0,0 +1,92 @@ +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; + } +}