From 2f526ede73f9dae602029e216a061ab3d2af941f Mon Sep 17 00:00:00 2001
From: Daniel Karso <daniel@netbuffer.com>
Date: Tue, 22 May 2018 13:12:36 +0200
Subject: [PATCH] [CORE] #GEN Add Email render element unit test.

---
 .../Drupal/Tests/Core/Render/Element/EmailTest.php | 73 ++++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100644 core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php

diff --git a/core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php b/core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php
new file mode 100644
index 0000000000..34aeca941b
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace Drupal\Tests\Core\Render\Element;
+
+use Drupal\Core\Form\FormState;
+use Drupal\Core\Render\Element\Email;
+use Drupal\Tests\UnitTestCase;
+use Egulias\EmailValidator\EmailValidatorInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * @coversDefaultClass \Drupal\Core\Render\Element\Email
+ * @group RenderEmailTest
+ */
+class EmailTest extends UnitTestCase {
+
+  /**
+   * @covers ::validateEmail
+   *
+   * @dataProvider providerTestValidateEmail
+   */
+  public function testValidateEmail($input, $expected, $expected_error_count) {
+    $element = [];
+    $form_state = new FormState();
+    $complete_form = [];
+    $element_object = new Email([], 'email', []);
+    $info = $element_object->getInfo();
+    $element += $info;
+    $element['#value'] = $input;
+    $element['#parents'] = [];
+    $email_validator = $this->prophesize(EmailValidatorInterface::class);
+    $email_validator->isValid($input)->willReturn($expected);
+    $container = $this->prophesize(ContainerInterface::class);
+    $container->get('email.validator')->willReturn($email_validator->reveal());
+    \Drupal::setContainer($container->reveal());
+
+    // Test if the form_state error has been set properly.
+    Email::validateEmail($element, $form_state,$complete_form);
+    $errors = $form_state->getErrors();
+    $this->assertEquals($expected_error_count, count($errors));
+  }
+
+  /**
+   * Data provider for testValidateEmail().
+   *
+   * @return array
+   *   The test data set.
+   */
+  public function providerTestValidateEmail() {
+    $data = [];
+    $data[] = ['foo.bar@example.com', TRUE, 0];
+    $data[] = ['miauw@', FALSE, 1];
+    $data[] = [['#email'], FALSE, 1];
+
+    return $data;
+  }
+
+  /**
+   * @covers ::preRenderEmail
+   */
+  public function testPreRenderEmail() {
+    $element = [];
+    $element_object = new Email([], 'email', []);
+    $info = $element_object->getInfo();
+    $element += $info;
+    $element = Email::preRenderEmail($element);
+    $this->assertEquals('email', $element['#attributes']['type']);
+    $this->assertEquals(60, $element['#attributes']['size']);
+    $this->assertEquals(254, $element['#attributes']['maxlength']);
+    $this->assertEquals('form-email', $element['#attributes']['class'][0]);
+  }
+
+}
-- 
2.16.2

From 4d5ac94ebb1e1d9100369e57952d2327b404cc8f Mon Sep 17 00:00:00 2001
From: Daniel Karso <daniel@netbuffer.com>
Date: Tue, 22 May 2018 16:17:42 +0200
Subject: [PATCH] [CORE] #GEN Add missing t function in EmailTest.

---
 core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php b/core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php
index 34aeca941b..12fd912963 100644
--- a/core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/Element/EmailTest.php
@@ -71,3 +71,11 @@ public function testPreRenderEmail() {
   }
 
 }
+
+namespace Drupal\Core\Render\Element;
+
+if (!function_exists('t')) {
+  function t($string, array $args = []) {
+    return strtr($string, $args);
+  }
+}
-- 
2.16.2

