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@0
|
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@0
|
34 protected function setUp() {
|
Chris@0
|
35 parent::setUp();
|
Chris@0
|
36
|
Chris@0
|
37 $this->drupalCreateContentType(['type' => 'article']);
|
Chris@0
|
38 $this->webUser = $this->drupalCreateUser(['create article content', 'edit own article content']);
|
Chris@0
|
39 $this->drupalLogin($this->webUser);
|
Chris@0
|
40 }
|
Chris@0
|
41
|
Chris@0
|
42 // Test fields.
|
Chris@0
|
43
|
Chris@0
|
44 /**
|
Chris@0
|
45 * Helper function for testTelephoneField().
|
Chris@0
|
46 */
|
Chris@0
|
47 public function testTelephoneField() {
|
Chris@0
|
48
|
Chris@0
|
49 // Add the telephone field to the article content type.
|
Chris@0
|
50 FieldStorageConfig::create([
|
Chris@0
|
51 'field_name' => 'field_telephone',
|
Chris@0
|
52 'entity_type' => 'node',
|
Chris@0
|
53 'type' => 'telephone',
|
Chris@0
|
54 ])->save();
|
Chris@0
|
55 FieldConfig::create([
|
Chris@0
|
56 'field_name' => 'field_telephone',
|
Chris@0
|
57 'label' => 'Telephone Number',
|
Chris@0
|
58 'entity_type' => 'node',
|
Chris@0
|
59 'bundle' => 'article',
|
Chris@0
|
60 ])->save();
|
Chris@0
|
61
|
Chris@0
|
62 entity_get_form_display('node', 'article', 'default')
|
Chris@0
|
63 ->setComponent('field_telephone', [
|
Chris@0
|
64 'type' => 'telephone_default',
|
Chris@0
|
65 'settings' => [
|
Chris@0
|
66 'placeholder' => '123-456-7890',
|
Chris@0
|
67 ],
|
Chris@0
|
68 ])
|
Chris@0
|
69 ->save();
|
Chris@0
|
70
|
Chris@0
|
71 entity_get_display('node', 'article', 'default')
|
Chris@0
|
72 ->setComponent('field_telephone', [
|
Chris@0
|
73 'type' => 'telephone_link',
|
Chris@0
|
74 'weight' => 1,
|
Chris@0
|
75 ])
|
Chris@0
|
76 ->save();
|
Chris@0
|
77
|
Chris@0
|
78 // Display creation form.
|
Chris@0
|
79 $this->drupalGet('node/add/article');
|
Chris@0
|
80 $this->assertFieldByName("field_telephone[0][value]", '', 'Widget found.');
|
Chris@0
|
81 $this->assertRaw('placeholder="123-456-7890"');
|
Chris@0
|
82
|
Chris@0
|
83 // Test basic entry of telephone field.
|
Chris@0
|
84 $edit = [
|
Chris@0
|
85 'title[0][value]' => $this->randomMachineName(),
|
Chris@0
|
86 'field_telephone[0][value]' => "123456789",
|
Chris@0
|
87 ];
|
Chris@0
|
88
|
Chris@0
|
89 $this->drupalPostForm(NULL, $edit, t('Save'));
|
Chris@0
|
90 $this->assertRaw('<a href="tel:123456789">', 'A telephone link is provided on the article node page.');
|
Chris@0
|
91
|
Chris@0
|
92 // Add number with a space in it. Need to ensure it is stripped on output.
|
Chris@0
|
93 $edit = [
|
Chris@0
|
94 'title[0][value]' => $this->randomMachineName(),
|
Chris@0
|
95 'field_telephone[0][value]' => "1234 56789",
|
Chris@0
|
96 ];
|
Chris@0
|
97
|
Chris@0
|
98 $this->drupalPostForm('node/add/article', $edit, t('Save'));
|
Chris@0
|
99 $this->assertRaw('<a href="tel:123456789">', 'Telephone link is output with whitespace removed.');
|
Chris@0
|
100 }
|
Chris@0
|
101
|
Chris@0
|
102 }
|