diff --git a/.gitignore b/.gitignore index 0acce77..74309fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /.env.local /.env.*.local +/.idea /apps/*/*/var/ diff --git a/apps/mooc/backend/config/routes/fino.yaml b/apps/mooc/backend/config/routes/fino.yaml new file mode 100644 index 0000000..9554210 --- /dev/null +++ b/apps/mooc/backend/config/routes/fino.yaml @@ -0,0 +1,4 @@ +fino_get: + path: /fino/{name} + controller: CodelyTv\Apps\Mooc\Backend\Controller\Fino\FinoGetController + methods: [GET] diff --git a/apps/mooc/backend/src/Controller/Fino/FinoGetController.php b/apps/mooc/backend/src/Controller/Fino/FinoGetController.php new file mode 100644 index 0000000..7ad5a2f --- /dev/null +++ b/apps/mooc/backend/src/Controller/Fino/FinoGetController.php @@ -0,0 +1,31 @@ +<?php + +declare(strict_types=1); + +namespace CodelyTv\Apps\Mooc\Backend\Controller\Fino; + +use CodelyTv\Shared\Domain\CurrentDateGenerator; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; + +final class FinoGetController +{ + private $date; + + public function __construct(CurrentDateGenerator $date) + { + $this->date = $date->generate(); + } + + public function __invoke(Request $request): Response + { + $name = $request->get('name'); + return new JsonResponse( + [ + 'desc' => 'Todo va fino ' . $name, + 'date' => $this->date, + ] + ); + } +} \ No newline at end of file diff --git a/src/Shared/Domain/CurrentDateGenerator.php b/src/Shared/Domain/CurrentDateGenerator.php new file mode 100644 index 0000000..4f16661 --- /dev/null +++ b/src/Shared/Domain/CurrentDateGenerator.php @@ -0,0 +1,10 @@ +<?php + +declare(strict_types = 1); + +namespace CodelyTv\Shared\Domain; + +interface CurrentDateGenerator +{ + public function generate(): string; +} \ No newline at end of file diff --git a/src/Shared/Infrastructure/PhpCurrentDateGenerator.php b/src/Shared/Infrastructure/PhpCurrentDateGenerator.php new file mode 100644 index 0000000..f43dac5 --- /dev/null +++ b/src/Shared/Infrastructure/PhpCurrentDateGenerator.php @@ -0,0 +1,15 @@ +<?php + +declare(strict_types = 1); + +namespace CodelyTv\Shared\Infrastructure; + +use CodelyTv\Shared\Domain\CurrentDateGenerator; + +final class PhpCurrentDateGenerator implements CurrentDateGenerator +{ + public function generate(): string + { + return date('Y-m-d H:i:s', strtotime('now')); + } +} diff --git a/tests/apps/mooc/backend/features/fino/fino_get.feature b/tests/apps/mooc/backend/features/fino/fino_get.feature new file mode 100644 index 0000000..377d456 --- /dev/null +++ b/tests/apps/mooc/backend/features/fino/fino_get.feature @@ -0,0 +1,13 @@ +Feature: Fino endpoint + In order to see todo va fino endpoind called by with name as param + I want to check the Fino endpoint + + Scenario: Check the api status + Given I send a GET request to "/fino/Carlitos" + Then the response content should be: + """ + { + "desc": "Todo va fino Carlitos", + "date": "2020-01-01 00:00:00" + } + """ diff --git a/tests/src/Shared/Infrastructure/ConstantCurrentDateGenerator.php b/tests/src/Shared/Infrastructure/ConstantCurrentDateGenerator.php new file mode 100644 index 0000000..e62c391 --- /dev/null +++ b/tests/src/Shared/Infrastructure/ConstantCurrentDateGenerator.php @@ -0,0 +1,15 @@ +<?php + +declare(strict_types = 1); + +namespace CodelyTv\Tests\Shared\Infrastructure; + +use CodelyTv\Shared\Domain\CurrentDateGenerator; + +final class ConstantCurrentDateGenerator implements CurrentDateGenerator +{ + public function generate(): string + { + return "2020-01-01 00:00:00"; + } +}