Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / telephone / tests / src / Functional / TelephoneFieldTest.php
index 18bedf0725ebeef363a0e4d65b3de06a3875bd9f..8d351819397b255ecd8a57546622e3876f266b36 100644 (file)
@@ -21,7 +21,7 @@ class TelephoneFieldTest extends BrowserTestBase {
   public static $modules = [
     'field',
     'node',
-    'telephone'
+    'telephone',
   ];
 
   /**
@@ -31,20 +31,15 @@ class TelephoneFieldTest extends BrowserTestBase {
    */
   protected $webUser;
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp() {
     parent::setUp();
 
     $this->drupalCreateContentType(['type' => 'article']);
     $this->webUser = $this->drupalCreateUser(['create article content', 'edit own article content']);
     $this->drupalLogin($this->webUser);
-  }
-
-  // Test fields.
-
-  /**
-   * Helper function for testTelephoneField().
-   */
-  public function testTelephoneField() {
 
     // Add the telephone field to the article content type.
     FieldStorageConfig::create([
@@ -74,29 +69,54 @@ class TelephoneFieldTest extends BrowserTestBase {
         'weight' => 1,
       ])
       ->save();
+  }
 
-    // Display creation form.
+  /**
+   * Test to confirm the widget is setup.
+   *
+   * @covers \Drupal\telephone\Plugin\Field\FieldWidget\TelephoneDefaultWidget::formElement
+   */
+  public function testTelephoneWidget() {
     $this->drupalGet('node/add/article');
     $this->assertFieldByName("field_telephone[0][value]", '', 'Widget found.');
     $this->assertRaw('placeholder="123-456-7890"');
+  }
 
+  /**
+   * Test the telephone formatter.
+   *
+   * @covers \Drupal\telephone\Plugin\Field\FieldFormatter\TelephoneLinkFormatter::viewElements
+   *
+   * @dataProvider providerPhoneNumbers
+   */
+  public function testTelephoneFormatter($input, $expected) {
     // Test basic entry of telephone field.
     $edit = [
       'title[0][value]' => $this->randomMachineName(),
-      'field_telephone[0][value]' => "123456789",
+      'field_telephone[0][value]' => $input,
     ];
 
-    $this->drupalPostForm(NULL, $edit, t('Save'));
-    $this->assertRaw('<a href="tel:123456789">', 'A telephone link is provided on the article node page.');
+    $this->drupalPostForm('node/add/article', $edit, t('Save'));
+    $this->assertRaw('<a href="tel:' . $expected . '">');
+  }
 
-    // Add number with a space in it. Need to ensure it is stripped on output.
-    $edit = [
-      'title[0][value]' => $this->randomMachineName(),
-      'field_telephone[0][value]' => "1234 56789",
+  /**
+   * Provides the phone numbers to check and expected results.
+   */
+  public function providerPhoneNumbers() {
+    return [
+      'standard phone number' => ['123456789', '123456789'],
+      'whitespace is removed' => ['1234 56789', '123456789'],
+      'parse_url(0) return FALSE workaround' => ['0', '0-'],
+      'php bug 70588 workaround - lower edge check' => ['1', '1-'],
+      'php bug 70588 workaround' => ['123', '1-23'],
+      'php bug 70588 workaround - with whitespace removal' => ['1 2 3 4 5', '1-2345'],
+      'php bug 70588 workaround - upper edge check' => ['65534', '6-5534'],
+      'php bug 70588 workaround - edge check' => ['65535', '6-5535'],
+      'php bug 70588 workaround - invalid port number - lower edge check' => ['65536', '6-5536'],
+      'php bug 70588 workaround - invalid port number - upper edge check' => ['99999', '9-9999'],
+      'lowest number not affected by php bug 70588' => ['100000', '100000'],
     ];
-
-    $this->drupalPostForm('node/add/article', $edit, t('Save'));
-    $this->assertRaw('<a href="tel:123456789">', 'Telephone link is output with whitespace removed.');
   }
 
 }