From 059b29628dbe17b0933ff470ffc59a9177ef01a6 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Mon, 9 Sep 2024 20:36:27 +0500 Subject: [PATCH 1/3] Sync, blog, part 2 --- blog-api/tests/Support/Data/database.db | Bin 114688 -> 114688 bytes blog/src/Auth/Form/LoginForm.php | 10 +++++++- blog/src/Auth/Form/SignupForm.php | 10 +++++++- blog/src/Contact/ContactController.php | 23 ++++++++---------- blog/src/Contact/ContactForm.php | 11 ++++++++- blog/tests/Acceptance/LoginAcceptanceCest.php | 4 +-- .../tests/Acceptance/SignupAcceptanceCest.php | 7 +++--- blog/tests/Functional/ContactCest.php | 8 ++++-- 8 files changed, 50 insertions(+), 23 deletions(-) diff --git a/blog-api/tests/Support/Data/database.db b/blog-api/tests/Support/Data/database.db index e0fa3d1db9c7b25a931a6f212423a6ef320fe3d4..6b81fc20180f049082153ab05a685d239a61b33f 100644 GIT binary patch delta 63 zcmZo@U~gz(pOD04e{*BXBQ8O+l+@%j%QOR1v!vwG;?yFR$@jU{Cfjqf^B~JKPvG7@ Jft#^l3jo8r6{Y|H delta 63 zcmZo@U~gz(pOD1lJ#k~oBQ8PXG$Uhk)0AY(L}TO9;?yFR$@jU{Cfjqf^B~JKPvG7@ Jft#^l3jmbg6g~g| diff --git a/blog/src/Auth/Form/LoginForm.php b/blog/src/Auth/Form/LoginForm.php index 36eeb2ca..3a422278 100644 --- a/blog/src/Auth/Form/LoginForm.php +++ b/blog/src/Auth/Form/LoginForm.php @@ -7,12 +7,15 @@ use App\Auth\AuthService; use Yiisoft\FormModel\FormModel; use Yiisoft\Translator\TranslatorInterface; +use Yiisoft\Validator\PropertyTranslator\ArrayPropertyTranslator; +use Yiisoft\Validator\PropertyTranslatorInterface; +use Yiisoft\Validator\PropertyTranslatorProviderInterface; use Yiisoft\Validator\Result; use Yiisoft\Validator\Rule\Callback; use Yiisoft\Validator\Rule\Required; use Yiisoft\Validator\RulesProviderInterface; -final class LoginForm extends FormModel implements RulesProviderInterface +final class LoginForm extends FormModel implements RulesProviderInterface, PropertyTranslatorProviderInterface { private string $login = ''; private string $password = ''; @@ -64,4 +67,9 @@ private function passwordRules(): array ), ]; } + + public function getPropertyTranslator(): ?PropertyTranslatorInterface + { + return new ArrayPropertyTranslator($this->getPropertyLabels()); + } } diff --git a/blog/src/Auth/Form/SignupForm.php b/blog/src/Auth/Form/SignupForm.php index d28875e4..909e5e79 100644 --- a/blog/src/Auth/Form/SignupForm.php +++ b/blog/src/Auth/Form/SignupForm.php @@ -8,13 +8,16 @@ use App\User\UserRepository; use Yiisoft\FormModel\FormModel; use Yiisoft\Translator\TranslatorInterface; +use Yiisoft\Validator\PropertyTranslator\ArrayPropertyTranslator; +use Yiisoft\Validator\PropertyTranslatorInterface; +use Yiisoft\Validator\PropertyTranslatorProviderInterface; use Yiisoft\Validator\Result; use Yiisoft\Validator\Rule\Equal; use Yiisoft\Validator\Rule\Length; use Yiisoft\Validator\Rule\Required; use Yiisoft\Validator\RulesProviderInterface; -final class SignupForm extends FormModel implements RulesProviderInterface +final class SignupForm extends FormModel implements RulesProviderInterface, PropertyTranslatorProviderInterface { private string $login = ''; private string $password = ''; @@ -85,4 +88,9 @@ function ($value): Result { ], ]; } + + public function getPropertyTranslator(): ?PropertyTranslatorInterface + { + return new ArrayPropertyTranslator($this->getPropertyLabels()); + } } diff --git a/blog/src/Contact/ContactController.php b/blog/src/Contact/ContactController.php index 40669f7c..e8c53217 100644 --- a/blog/src/Contact/ContactController.php +++ b/blog/src/Contact/ContactController.php @@ -9,9 +9,10 @@ use Psr\Http\Message\ServerRequestInterface; use Yiisoft\FormModel\FormHydrator; use Yiisoft\Http\Header; -use Yiisoft\Http\Method; use Yiisoft\Http\Status; use Yiisoft\Router\UrlGeneratorInterface; +use Yiisoft\Session\Flash\Flash; +use Yiisoft\Session\SessionInterface; use Yiisoft\Yii\View\Renderer\ViewRenderer; final class ContactController @@ -29,21 +30,17 @@ public function __construct( public function contact( FormHydrator $formHydrator, - ServerRequestInterface $request + ServerRequestInterface $request, ): ResponseInterface { - $body = $request->getParsedBody(); $form = new ContactForm(); - if (($request->getMethod() === Method::POST) - && $formHydrator->populate($form, $body) - && $form->isValid() - ) { - $this->mailer->send($form, $request); - - return $this->responseFactory - ->createResponse(Status::FOUND) - ->withHeader(Header::LOCATION, $this->url->generate('site/contact')); + if (!$formHydrator->populateFromPostAndValidate($form, $request)) { + return $this->viewRenderer->render('form', ['form' => $form]); } - return $this->viewRenderer->render('form', ['form' => $form]); + $this->mailer->send($form); + + return $this->responseFactory + ->createResponse(Status::FOUND) + ->withHeader(Header::LOCATION, $this->url->generate('site/contact')); } } diff --git a/blog/src/Contact/ContactForm.php b/blog/src/Contact/ContactForm.php index fc5d9d5f..68bef8a9 100644 --- a/blog/src/Contact/ContactForm.php +++ b/blog/src/Contact/ContactForm.php @@ -6,11 +6,14 @@ use Yiisoft\FormModel\FormModel; use Yiisoft\Input\Http\Attribute\Parameter\UploadedFiles; +use Yiisoft\Validator\PropertyTranslator\ArrayPropertyTranslator; +use Yiisoft\Validator\PropertyTranslatorInterface; +use Yiisoft\Validator\PropertyTranslatorProviderInterface; use Yiisoft\Validator\Rule\Email; use Yiisoft\Validator\Rule\Required; use Yiisoft\Validator\RulesProviderInterface; -final class ContactForm extends FormModel implements RulesProviderInterface +final class ContactForm extends FormModel implements RulesProviderInterface, PropertyTranslatorProviderInterface { private string $name = ''; private string $email = ''; @@ -44,4 +47,10 @@ public function getRules(): array 'body' => [new Required()], ]; } + + + public function getPropertyTranslator(): ?PropertyTranslatorInterface + { + return new ArrayPropertyTranslator($this->getPropertyLabels()); + } } diff --git a/blog/tests/Acceptance/LoginAcceptanceCest.php b/blog/tests/Acceptance/LoginAcceptanceCest.php index 25436c6b..022beff3 100644 --- a/blog/tests/Acceptance/LoginAcceptanceCest.php +++ b/blog/tests/Acceptance/LoginAcceptanceCest.php @@ -28,8 +28,8 @@ public function testLoginEmptyDataTest(AcceptanceTester $I): void $I->click('Submit', '#loginForm'); $I->expectTo('see validations errors.'); - $I->see('Value cannot be blank'); - $I->see('Value cannot be blank'); + $I->see('Login cannot be blank.'); + $I->see('Password cannot be blank.'); $I->seeElement('button', ['name' => 'login-button']); } diff --git a/blog/tests/Acceptance/SignupAcceptanceCest.php b/blog/tests/Acceptance/SignupAcceptanceCest.php index 6bf61c19..ccd7e3b2 100644 --- a/blog/tests/Acceptance/SignupAcceptanceCest.php +++ b/blog/tests/Acceptance/SignupAcceptanceCest.php @@ -44,9 +44,10 @@ public function testRegisterEmptyData(AcceptanceTester $I): void $I->click('Submit', '#signupForm'); $I->expectTo('see registration register validation.'); - $I->see('Value cannot be blank'); - $I->see('Value cannot be blank'); - $I->see('Value cannot be blank'); + $I->see('Login cannot be blank.'); + $I->see('Password cannot be blank.'); + $I->see('Password must contain at least 8 characters.'); + $I->see('Confirm password cannot be blank.'); $I->seeElement('button', ['name' => 'register-button']); } diff --git a/blog/tests/Functional/ContactCest.php b/blog/tests/Functional/ContactCest.php index 9a30936d..a15d119e 100644 --- a/blog/tests/Functional/ContactCest.php +++ b/blog/tests/Functional/ContactCest.php @@ -24,7 +24,11 @@ public function submitEmptyForm(FunctionalTester $I) { $I->submitForm('#form-contact', []); $I->expectTo('see validations errors'); - $I->see('Value cannot be blank.'); + $I->see('Name cannot be blank.'); + $I->see('Email cannot be blank.'); + $I->see('Email is not a valid email address.'); + $I->see('Subject cannot be blank.'); + $I->see('Body cannot be blank.'); } public function submitFormWithIncorrectEmail(FunctionalTester $I) @@ -37,7 +41,7 @@ public function submitFormWithIncorrectEmail(FunctionalTester $I) 'ContactForm[verifyCode]' => 'testme', ]); $I->expectTo('see that email address is wrong'); - $I->see('This value is not a valid email address.'); + $I->see('Email is not a valid email address.'); } public function submitFormSuccessfully(FunctionalTester $I) From e5cbf3fad04aff2702bbaa5856a8cc210c308c59 Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Mon, 9 Sep 2024 15:36:41 +0000 Subject: [PATCH 2/3] Apply fixes from StyleCI --- blog/src/Contact/ContactController.php | 2 -- blog/src/Contact/ContactForm.php | 1 - 2 files changed, 3 deletions(-) diff --git a/blog/src/Contact/ContactController.php b/blog/src/Contact/ContactController.php index e8c53217..ee855b4f 100644 --- a/blog/src/Contact/ContactController.php +++ b/blog/src/Contact/ContactController.php @@ -11,8 +11,6 @@ use Yiisoft\Http\Header; use Yiisoft\Http\Status; use Yiisoft\Router\UrlGeneratorInterface; -use Yiisoft\Session\Flash\Flash; -use Yiisoft\Session\SessionInterface; use Yiisoft\Yii\View\Renderer\ViewRenderer; final class ContactController diff --git a/blog/src/Contact/ContactForm.php b/blog/src/Contact/ContactForm.php index 68bef8a9..b5ad5304 100644 --- a/blog/src/Contact/ContactForm.php +++ b/blog/src/Contact/ContactForm.php @@ -48,7 +48,6 @@ public function getRules(): array ]; } - public function getPropertyTranslator(): ?PropertyTranslatorInterface { return new ArrayPropertyTranslator($this->getPropertyLabels()); From 038e7c3c0c3fafcc11028da812052faee8d7a107 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Mon, 9 Sep 2024 20:44:57 +0500 Subject: [PATCH 3/3] WIP --- blog/composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/blog/composer.json b/blog/composer.json index f0dfa1e9..08c53970 100644 --- a/blog/composer.json +++ b/blog/composer.json @@ -91,7 +91,8 @@ "yiisoft/yii-runner-http": "^2.0", "yiisoft/yii-sentry": "^2.0.1", "yiisoft/yii-swagger": "^2.1.1", - "yiisoft/yii-view-renderer": "^7.1" + "yiisoft/yii-view-renderer": "^7.1", + "zircote/swagger-php": "^4.0" }, "require-dev": { "codeception/c3": "^2.6",