annotate core/modules/telephone/tests/src/Functional/TelephoneFieldTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\telephone\Functional;
Chris@0 4
Chris@0 5 use Drupal\field\Entity\FieldConfig;
Chris@0 6 use Drupal\Tests\BrowserTestBase;
Chris@0 7 use Drupal\field\Entity\FieldStorageConfig;
Chris@0 8
Chris@0 9 /**
Chris@0 10 * Tests the creation of telephone fields.
Chris@0 11 *
Chris@0 12 * @group telephone
Chris@0 13 */
Chris@0 14 class TelephoneFieldTest extends BrowserTestBase {
Chris@0 15
Chris@0 16 /**
Chris@0 17 * Modules to enable.
Chris@0 18 *
Chris@0 19 * @var array
Chris@0 20 */
Chris@0 21 public static $modules = [
Chris@0 22 'field',
Chris@0 23 'node',
Chris@17 24 'telephone',
Chris@0 25 ];
Chris@0 26
Chris@0 27 /**
Chris@0 28 * A user with permission to create articles.
Chris@0 29 *
Chris@0 30 * @var \Drupal\user\UserInterface
Chris@0 31 */
Chris@0 32 protected $webUser;
Chris@0 33
Chris@17 34 /**
Chris@17 35 * {@inheritdoc}
Chris@17 36 */
Chris@0 37 protected function setUp() {
Chris@0 38 parent::setUp();
Chris@0 39
Chris@0 40 $this->drupalCreateContentType(['type' => 'article']);
Chris@0 41 $this->webUser = $this->drupalCreateUser(['create article content', 'edit own article content']);
Chris@0 42 $this->drupalLogin($this->webUser);
Chris@0 43
Chris@0 44 // Add the telephone field to the article content type.
Chris@0 45 FieldStorageConfig::create([
Chris@0 46 'field_name' => 'field_telephone',
Chris@0 47 'entity_type' => 'node',
Chris@0 48 'type' => 'telephone',
Chris@0 49 ])->save();
Chris@0 50 FieldConfig::create([
Chris@0 51 'field_name' => 'field_telephone',
Chris@0 52 'label' => 'Telephone Number',
Chris@0 53 'entity_type' => 'node',
Chris@0 54 'bundle' => 'article',
Chris@0 55 ])->save();
Chris@0 56
Chris@0 57 entity_get_form_display('node', 'article', 'default')
Chris@0 58 ->setComponent('field_telephone', [
Chris@0 59 'type' => 'telephone_default',
Chris@0 60 'settings' => [
Chris@0 61 'placeholder' => '123-456-7890',
Chris@0 62 ],
Chris@0 63 ])
Chris@0 64 ->save();
Chris@0 65
Chris@0 66 entity_get_display('node', 'article', 'default')
Chris@0 67 ->setComponent('field_telephone', [
Chris@0 68 'type' => 'telephone_link',
Chris@0 69 'weight' => 1,
Chris@0 70 ])
Chris@0 71 ->save();
Chris@17 72 }
Chris@0 73
Chris@17 74 /**
Chris@17 75 * Test to confirm the widget is setup.
Chris@17 76 *
Chris@17 77 * @covers \Drupal\telephone\Plugin\Field\FieldWidget\TelephoneDefaultWidget::formElement
Chris@17 78 */
Chris@17 79 public function testTelephoneWidget() {
Chris@0 80 $this->drupalGet('node/add/article');
Chris@0 81 $this->assertFieldByName("field_telephone[0][value]", '', 'Widget found.');
Chris@0 82 $this->assertRaw('placeholder="123-456-7890"');
Chris@17 83 }
Chris@0 84
Chris@17 85 /**
Chris@17 86 * Test the telephone formatter.
Chris@17 87 *
Chris@17 88 * @covers \Drupal\telephone\Plugin\Field\FieldFormatter\TelephoneLinkFormatter::viewElements
Chris@17 89 *
Chris@17 90 * @dataProvider providerPhoneNumbers
Chris@17 91 */
Chris@17 92 public function testTelephoneFormatter($input, $expected) {
Chris@0 93 // Test basic entry of telephone field.
Chris@0 94 $edit = [
Chris@0 95 'title[0][value]' => $this->randomMachineName(),
Chris@17 96 'field_telephone[0][value]' => $input,
Chris@0 97 ];
Chris@0 98
Chris@0 99 $this->drupalPostForm('node/add/article', $edit, t('Save'));
Chris@17 100 $this->assertRaw('<a href="tel:' . $expected . '">');
Chris@17 101 }
Chris@17 102
Chris@17 103 /**
Chris@17 104 * Provides the phone numbers to check and expected results.
Chris@17 105 */
Chris@17 106 public function providerPhoneNumbers() {
Chris@17 107 return [
Chris@17 108 'standard phone number' => ['123456789', '123456789'],
Chris@17 109 'whitespace is removed' => ['1234 56789', '123456789'],
Chris@17 110 'parse_url(0) return FALSE workaround' => ['0', '0-'],
Chris@17 111 'php bug 70588 workaround - lower edge check' => ['1', '1-'],
Chris@17 112 'php bug 70588 workaround' => ['123', '1-23'],
Chris@17 113 'php bug 70588 workaround - with whitespace removal' => ['1 2 3 4 5', '1-2345'],
Chris@17 114 'php bug 70588 workaround - upper edge check' => ['65534', '6-5534'],
Chris@17 115 'php bug 70588 workaround - edge check' => ['65535', '6-5535'],
Chris@17 116 'php bug 70588 workaround - invalid port number - lower edge check' => ['65536', '6-5536'],
Chris@17 117 'php bug 70588 workaround - invalid port number - upper edge check' => ['99999', '9-9999'],
Chris@17 118 'lowest number not affected by php bug 70588' => ['100000', '100000'],
Chris@17 119 ];
Chris@0 120 }
Chris@0 121
Chris@0 122 }