From 495a624be68093de1fc5fc6792e21279ef2b1ad5 Mon Sep 17 00:00:00 2001 From: "Rafalko, Maksim" Date: Mon, 27 May 2024 00:44:13 +0200 Subject: [PATCH] Add tests --- app/src/Controller/AstController.php | 3 + app/src/Form/CreateAstRunType.php | 5 +- app/src/Request/CreateAstRunRequest.php | 2 +- .../Controller/AstControllerTest.php | 89 +++++++++++++++++++ 4 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 app/tests/Functional/Controller/AstControllerTest.php diff --git a/app/src/Controller/AstController.php b/app/src/Controller/AstController.php index 40431be..0bb6d58 100644 --- a/app/src/Controller/AstController.php +++ b/app/src/Controller/AstController.php @@ -59,6 +59,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; +use Webmozart\Assert\Assert; class AstController extends AbstractController { @@ -92,6 +93,8 @@ public function createExample(Request $request, EntityManagerInterface $em): Res $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { + Assert::notNull($createAstRunRequest->code); + $existingAstRun = $this->astRunRepository->findContentByHash( AstRun::hashInput($createAstRunRequest->code) ); diff --git a/app/src/Form/CreateAstRunType.php b/app/src/Form/CreateAstRunType.php index 6cc8c6f..fc78e00 100644 --- a/app/src/Form/CreateAstRunType.php +++ b/app/src/Form/CreateAstRunType.php @@ -45,10 +45,7 @@ class CreateAstRunType extends AbstractType { - /** - * @var UrlGeneratorInterface - */ - private $urlGenerator; + private UrlGeneratorInterface $urlGenerator; public function __construct(UrlGeneratorInterface $urlGenerator) { diff --git a/app/src/Request/CreateAstRunRequest.php b/app/src/Request/CreateAstRunRequest.php index cf6895a..0c8f1c3 100644 --- a/app/src/Request/CreateAstRunRequest.php +++ b/app/src/Request/CreateAstRunRequest.php @@ -43,7 +43,7 @@ class CreateAstRunRequest { #[AppAssert\ValidPhpCode] #[Assert\NotBlank] - public string $code; + public ?string $code = null; public static function fromEntity(AstRun $astRun): self { diff --git a/app/tests/Functional/Controller/AstControllerTest.php b/app/tests/Functional/Controller/AstControllerTest.php new file mode 100644 index 0000000..5cc236c --- /dev/null +++ b/app/tests/Functional/Controller/AstControllerTest.php @@ -0,0 +1,89 @@ +catchExceptions(false); + + $client->request('GET', '/ast'); + static::assertSame(200, $client->getResponse()->getStatusCode()); + + $client->submitForm('create_ast_run[buildAst]', [ + 'create_ast_run[code]' => 'code', + ]); + + static::assertSame(302, $client->getResponse()->getStatusCode()); + static::assertStringNotContainsString('This value should not be blank', (string) $client->getResponse()->getContent()); + } + + public function test_it_fails_with_when_code_is_blank(): void + { + $client = static::createClient(); + $client->followRedirects(); + $client->catchExceptions(false); + + $client->request('GET', '/ast'); + + $client->submitForm('create_ast_run[buildAst]', [ + 'create_ast_run[code]' => '', + ]); + + static::assertSame(200, $client->getResponse()->getStatusCode()); + static::assertStringContainsString('This value should not be blank', (string) $client->getResponse()->getContent()); + } + + public function test_it_fails_with_when_code_is_invalid(): void + { + $client = static::createClient(); + $client->followRedirects(); + $client->catchExceptions(false); + + $client->request('GET', '/ast'); + + $client->submitForm('create_ast_run[buildAst]', [ + 'create_ast_run[code]' => 'getResponse()->getStatusCode()); + static::assertStringContainsString('This is not a valid PHP code. Errors: Syntax error, unexpected', (string) $client->getResponse()->getContent()); + } +}