From eb53272faa40f199dc6ae41e79b4ff633855c499 Mon Sep 17 00:00:00 2001
From: Nidhi Patadia <nidhipatadia27@gmail.com>
Date: Tue, 25 Mar 2025 12:26:59 +0530
Subject: [PATCH 1/8] Add validation to verify email form.

---
 src/Form/VerifyEmailForm.php                 | 33 +++++++++++++++++
 tests/src/Functional/VerifyEmailFormTest.php | 39 ++++++++++++++++++++
 2 files changed, 72 insertions(+)
 create mode 100644 tests/src/Functional/VerifyEmailFormTest.php

diff --git a/src/Form/VerifyEmailForm.php b/src/Form/VerifyEmailForm.php
index 221106c..978cdf7 100644
--- a/src/Form/VerifyEmailForm.php
+++ b/src/Form/VerifyEmailForm.php
@@ -4,15 +4,43 @@
 
 namespace Drupal\verify_email\Form;
 
+use Drupal\Component\Utility\EmailValidatorInterface;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\verify_email\VerifyEmailInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Provides a Verify Email form.
  */
 final class VerifyEmailForm extends FormBase {
 
+  /**
+   * The email validator.
+   *
+   * @var \Drupal\Component\Utility\EmailValidatorInterface
+   */
+  protected $emailValidator;
+
+  /**
+   * Constructs a new VerifyEmailForm.
+   *
+   * @param \Drupal\Component\Utility\EmailValidatorInterface $email_validator
+   *   The email validator service.
+   */
+  public function __construct(EmailValidatorInterface $email_validator) {
+    $this->emailValidator = $email_validator;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container): self {
+    return new static(
+      $container->get('email.validator')
+    );
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -62,6 +90,11 @@ public function validateForm(array &$form, FormStateInterface $form_state): void
     //     );
     //   }
     // @endcode
+    // Use the email validator service to validate the email address.
+    $email = $form_state->getValue('message');
+    if (!$this->emailValidator->isValid($email)) {
+      $form_state->setErrorByName('message', $this->t('The email address %email is not valid.', ['%email' => $email]));
+    }
   }
 
   /**
diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php
new file mode 100644
index 0000000..3c1a283
--- /dev/null
+++ b/tests/src/Functional/VerifyEmailFormTest.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\Tests\verify_email\Functional;
+
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests the Verify Email form.
+ */
+#[Group('verify_email')]
+final class VerifyEmailFormTest extends BrowserTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = ['verify_email'];
+
+  /**
+   * Tests invalid email validation.
+   */
+  public function testInvalidEmail(): void {
+    // Visit the Verify Email form.
+    $this->drupalGet('/verify-email');
+
+    // Ensure the form is displayed.
+    $this->assertSession()->statusCodeEquals(200);
+    $this->assertSession()->pageTextContains('Please enter your email address below.');
+
+    // Submit the form with an invalid email address.
+    $this->submitForm([
+      'message' => 'invalid-email',
+    ], 'Verify');
+
+    // Assert that an error message is displayed.
+    $this->assertSession()->pageTextContains('The email address invalid-email is not valid.');
+  }
+}
-- 
GitLab


From 6b4672aea51dc5d86ea676869183d7bbc1f17e8d Mon Sep 17 00:00:00 2001
From: Nidhi Patadia <nidhipatadia27@gmail.com>
Date: Tue, 25 Mar 2025 12:35:09 +0530
Subject: [PATCH 2/8] Add validation to verify email form.

---
 tests/src/Functional/VerifyEmailFormTest.php | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php
index 3c1a283..07fa856 100644
--- a/tests/src/Functional/VerifyEmailFormTest.php
+++ b/tests/src/Functional/VerifyEmailFormTest.php
@@ -17,6 +17,11 @@ final class VerifyEmailFormTest extends BrowserTestBase {
    */
   protected static $modules = ['verify_email'];
 
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stark';
+
   /**
    * Tests invalid email validation.
    */
-- 
GitLab


From f41d86bc53e100c65691a65c63a99ca8610d552d Mon Sep 17 00:00:00 2001
From: Nidhi Patadia <nidhipatadia27@gmail.com>
Date: Tue, 25 Mar 2025 12:52:16 +0530
Subject: [PATCH 3/8] Add validation to verify email form.

---
 tests/src/Functional/VerifyEmailFormTest.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php
index 07fa856..cc4dbb0 100644
--- a/tests/src/Functional/VerifyEmailFormTest.php
+++ b/tests/src/Functional/VerifyEmailFormTest.php
@@ -41,4 +41,5 @@ public function testInvalidEmail(): void {
     // Assert that an error message is displayed.
     $this->assertSession()->pageTextContains('The email address invalid-email is not valid.');
   }
+
 }
-- 
GitLab


From b5c3f66e807572acf26b9cbbd445fbb815479306 Mon Sep 17 00:00:00 2001
From: Nidhi Patadia <nidhipatadia27@gmail.com>
Date: Tue, 25 Mar 2025 13:08:01 +0530
Subject: [PATCH 4/8] Add validation to verify email form.

---
 tests/src/Functional/VerifyEmailFormTest.php | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php
index cc4dbb0..af32e4a 100644
--- a/tests/src/Functional/VerifyEmailFormTest.php
+++ b/tests/src/Functional/VerifyEmailFormTest.php
@@ -8,8 +8,9 @@
 
 /**
  * Tests the Verify Email form.
+ *
+ * @group verify_email
  */
-#[Group('verify_email')]
 final class VerifyEmailFormTest extends BrowserTestBase {
 
   /**
@@ -22,6 +23,21 @@ final class VerifyEmailFormTest extends BrowserTestBase {
    */
   protected $defaultTheme = 'stark';
 
+  /**
+   * {@inheritdoc}
+   */
+  protected $adminUser;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+    // Set up the test here.
+    $this->adminUser = $this->drupalCreateUser(['access content']);
+    $this->drupalLogin($this->adminUser);
+  }
+
   /**
    * Tests invalid email validation.
    */
-- 
GitLab


From 9caeaaab100b0123e955261419cf4a78bd544b60 Mon Sep 17 00:00:00 2001
From: KPL22 <Keshav.patel@3ds.com>
Date: Wed, 26 Mar 2025 10:49:21 +0530
Subject: [PATCH 5/8] Issue #3515147: Improved constructor code

---
 src/Form/VerifyEmailForm.php | 19 +++----------------
 1 file changed, 3 insertions(+), 16 deletions(-)

diff --git a/src/Form/VerifyEmailForm.php b/src/Form/VerifyEmailForm.php
index 978cdf7..e805e3a 100644
--- a/src/Form/VerifyEmailForm.php
+++ b/src/Form/VerifyEmailForm.php
@@ -15,30 +15,16 @@
  */
 final class VerifyEmailForm extends FormBase {
 
-  /**
-   * The email validator.
-   *
-   * @var \Drupal\Component\Utility\EmailValidatorInterface
-   */
-  protected $emailValidator;
-
   /**
    * Constructs a new VerifyEmailForm.
-   *
-   * @param \Drupal\Component\Utility\EmailValidatorInterface $email_validator
-   *   The email validator service.
    */
-  public function __construct(EmailValidatorInterface $email_validator) {
-    $this->emailValidator = $email_validator;
-  }
+  public function __construct(protected EmailValidatorInterface $emailValidator) {}
 
   /**
    * {@inheritdoc}
    */
   public static function create(ContainerInterface $container): self {
-    return new static(
-      $container->get('email.validator')
-    );
+    return new static($container->get('email.validator'));
   }
 
   /**
@@ -90,6 +76,7 @@ public function validateForm(array &$form, FormStateInterface $form_state): void
     //     );
     //   }
     // @endcode
+
     // Use the email validator service to validate the email address.
     $email = $form_state->getValue('message');
     if (!$this->emailValidator->isValid($email)) {
-- 
GitLab


From 9d5087e09b86a2356e712468f82a16c1c7b757a4 Mon Sep 17 00:00:00 2001
From: lostcarpark <james@lostcarpark.com>
Date: Wed, 26 Mar 2025 13:43:01 +0000
Subject: [PATCH 6/8] Remove boilerplate from validation function.

---
 src/Form/VerifyEmailForm.php | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/src/Form/VerifyEmailForm.php b/src/Form/VerifyEmailForm.php
index e805e3a..b2bdb99 100644
--- a/src/Form/VerifyEmailForm.php
+++ b/src/Form/VerifyEmailForm.php
@@ -66,17 +66,6 @@ public function buildForm(array $form, FormStateInterface $form_state, VerifyEma
    * {@inheritdoc}
    */
   public function validateForm(array &$form, FormStateInterface $form_state): void {
-    // @todo Validate the form here.
-    // Example:
-    // @code
-    //   if (mb_strlen($form_state->getValue('message')) < 10) {
-    //     $form_state->setErrorByName(
-    //       'message',
-    //       $this->t('Message should be at least 10 characters.'),
-    //     );
-    //   }
-    // @endcode
-
     // Use the email validator service to validate the email address.
     $email = $form_state->getValue('message');
     if (!$this->emailValidator->isValid($email)) {
-- 
GitLab


From e6c3dff8388cdc8d2e228c7a18d69f545acc4ab0 Mon Sep 17 00:00:00 2001
From: Nidhi Patadia <nidhipatadia27@gmail.com>
Date: Wed, 26 Mar 2025 20:24:30 +0530
Subject: [PATCH 7/8] Added php unit test.

---
 tests/src/Functional/VerifyEmailFormTest.php  | 61 -------------------
 .../src/Functional/VerifyEmailRoutingTest.php | 13 ++++
 2 files changed, 13 insertions(+), 61 deletions(-)
 delete mode 100644 tests/src/Functional/VerifyEmailFormTest.php

diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php
deleted file mode 100644
index af32e4a..0000000
--- a/tests/src/Functional/VerifyEmailFormTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Drupal\Tests\verify_email\Functional;
-
-use Drupal\Tests\BrowserTestBase;
-
-/**
- * Tests the Verify Email form.
- *
- * @group verify_email
- */
-final class VerifyEmailFormTest extends BrowserTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected static $modules = ['verify_email'];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $defaultTheme = 'stark';
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $adminUser;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp(): void {
-    parent::setUp();
-    // Set up the test here.
-    $this->adminUser = $this->drupalCreateUser(['access content']);
-    $this->drupalLogin($this->adminUser);
-  }
-
-  /**
-   * Tests invalid email validation.
-   */
-  public function testInvalidEmail(): void {
-    // Visit the Verify Email form.
-    $this->drupalGet('/verify-email');
-
-    // Ensure the form is displayed.
-    $this->assertSession()->statusCodeEquals(200);
-    $this->assertSession()->pageTextContains('Please enter your email address below.');
-
-    // Submit the form with an invalid email address.
-    $this->submitForm([
-      'message' => 'invalid-email',
-    ], 'Verify');
-
-    // Assert that an error message is displayed.
-    $this->assertSession()->pageTextContains('The email address invalid-email is not valid.');
-  }
-
-}
diff --git a/tests/src/Functional/VerifyEmailRoutingTest.php b/tests/src/Functional/VerifyEmailRoutingTest.php
index a36f9e2..bb886b2 100644
--- a/tests/src/Functional/VerifyEmailRoutingTest.php
+++ b/tests/src/Functional/VerifyEmailRoutingTest.php
@@ -59,4 +59,17 @@ public function testVerifyEmailRoute(): void {
     $this->assertSession()->pageTextContains('Enter your email address.');
   }
 
+  /**
+   * Tests invalid email validation.
+   */
+  public function testInvalidEmail(): void {
+    $this->drupalGet('/verify-email-form');
+    $this->assertSession()->statusCodeEquals(200);
+    // Submit the form with an invalid email address.
+    $this->submitForm([
+      'message' => 'invalid-email',
+    ], 'Verify');
+    $this->assertSession()->pageTextContains('The email address invalid-email is not valid.');
+  }
+
 }
-- 
GitLab


From 45dc1dae11877f343d96c410c85768eaf93c3ced Mon Sep 17 00:00:00 2001
From: lostcarpark <james@lostcarpark.com>
Date: Wed, 26 Mar 2025 17:47:30 +0000
Subject: [PATCH 8/8] Update field name in test.

---
 src/Form/VerifyEmailForm.php                    | 6 +++---
 tests/src/Functional/VerifyEmailRoutingTest.php | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/Form/VerifyEmailForm.php b/src/Form/VerifyEmailForm.php
index b2bdb99..18721ea 100644
--- a/src/Form/VerifyEmailForm.php
+++ b/src/Form/VerifyEmailForm.php
@@ -45,7 +45,7 @@ public function buildForm(array $form, FormStateInterface $form_state, VerifyEma
       '#suffix' => '</div>',
     ];
 
-    $form['message'] = [
+    $form['email'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Enter your email address'),
       '#required' => TRUE,
@@ -67,9 +67,9 @@ public function buildForm(array $form, FormStateInterface $form_state, VerifyEma
    */
   public function validateForm(array &$form, FormStateInterface $form_state): void {
     // Use the email validator service to validate the email address.
-    $email = $form_state->getValue('message');
+    $email = $form_state->getValue('email');
     if (!$this->emailValidator->isValid($email)) {
-      $form_state->setErrorByName('message', $this->t('The email address %email is not valid.', ['%email' => $email]));
+      $form_state->setErrorByName('email', $this->t('The email address %email is not valid.', ['%email' => $email]));
     }
   }
 
diff --git a/tests/src/Functional/VerifyEmailRoutingTest.php b/tests/src/Functional/VerifyEmailRoutingTest.php
index bb886b2..a672585 100644
--- a/tests/src/Functional/VerifyEmailRoutingTest.php
+++ b/tests/src/Functional/VerifyEmailRoutingTest.php
@@ -67,7 +67,7 @@ public function testInvalidEmail(): void {
     $this->assertSession()->statusCodeEquals(200);
     // Submit the form with an invalid email address.
     $this->submitForm([
-      'message' => 'invalid-email',
+      'email' => 'invalid-email',
     ], 'Verify');
     $this->assertSession()->pageTextContains('The email address invalid-email is not valid.');
   }
-- 
GitLab