Chris@17
|
1 <?php
|
Chris@17
|
2
|
Chris@17
|
3 namespace Drupal\FunctionalTests\Datetime;
|
Chris@17
|
4
|
Chris@17
|
5 use Drupal\Core\Entity\Entity\EntityFormDisplay;
|
Chris@17
|
6 use Drupal\Core\Entity\Entity\EntityViewDisplay;
|
Chris@17
|
7 use Drupal\field\Entity\FieldConfig;
|
Chris@17
|
8 use Drupal\field\Entity\FieldStorageConfig;
|
Chris@17
|
9 use Drupal\Tests\BrowserTestBase;
|
Chris@17
|
10
|
Chris@17
|
11 /**
|
Chris@17
|
12 * Tests the functionality of TimestampAgoFormatter core field formatter.
|
Chris@17
|
13 *
|
Chris@17
|
14 * @group field
|
Chris@17
|
15 */
|
Chris@17
|
16 class TimestampAgoFormatterTest extends BrowserTestBase {
|
Chris@17
|
17
|
Chris@17
|
18 /**
|
Chris@17
|
19 * An array of display options to pass to entity_get_display().
|
Chris@17
|
20 *
|
Chris@17
|
21 * @var array
|
Chris@17
|
22 */
|
Chris@17
|
23 protected $displayOptions;
|
Chris@17
|
24
|
Chris@17
|
25 /**
|
Chris@17
|
26 * A field storage to use in this test class.
|
Chris@17
|
27 *
|
Chris@17
|
28 * @var \Drupal\field\Entity\FieldStorageConfig
|
Chris@17
|
29 */
|
Chris@17
|
30 protected $fieldStorage;
|
Chris@17
|
31
|
Chris@17
|
32 /**
|
Chris@17
|
33 * The field used in this test class.
|
Chris@17
|
34 *
|
Chris@17
|
35 * @var \Drupal\field\Entity\FieldConfig
|
Chris@17
|
36 */
|
Chris@17
|
37 protected $field;
|
Chris@17
|
38
|
Chris@17
|
39 /**
|
Chris@17
|
40 * {@inheritdoc}
|
Chris@17
|
41 */
|
Chris@17
|
42 public static $modules = ['entity_test', 'field_ui'];
|
Chris@17
|
43
|
Chris@17
|
44 /**
|
Chris@17
|
45 * {@inheritdoc}
|
Chris@17
|
46 */
|
Chris@17
|
47 protected function setUp() {
|
Chris@17
|
48 parent::setUp();
|
Chris@17
|
49
|
Chris@17
|
50 $web_user = $this->drupalCreateUser([
|
Chris@17
|
51 'access administration pages',
|
Chris@17
|
52 'view test entity',
|
Chris@17
|
53 'administer entity_test content',
|
Chris@17
|
54 'administer entity_test fields',
|
Chris@17
|
55 'administer entity_test display',
|
Chris@17
|
56 'administer entity_test form display',
|
Chris@17
|
57 'view the administration theme',
|
Chris@17
|
58 ]);
|
Chris@17
|
59 $this->drupalLogin($web_user);
|
Chris@17
|
60
|
Chris@17
|
61 $field_name = 'field_timestamp';
|
Chris@17
|
62 $type = 'timestamp';
|
Chris@17
|
63 $widget_type = 'datetime_timestamp';
|
Chris@17
|
64 $formatter_type = 'timestamp_ago';
|
Chris@17
|
65
|
Chris@17
|
66 $this->fieldStorage = FieldStorageConfig::create([
|
Chris@17
|
67 'field_name' => $field_name,
|
Chris@17
|
68 'entity_type' => 'entity_test',
|
Chris@17
|
69 'type' => $type,
|
Chris@17
|
70 ]);
|
Chris@17
|
71 $this->fieldStorage->save();
|
Chris@17
|
72 $this->field = FieldConfig::create([
|
Chris@17
|
73 'field_storage' => $this->fieldStorage,
|
Chris@17
|
74 'bundle' => 'entity_test',
|
Chris@17
|
75 'required' => TRUE,
|
Chris@17
|
76 ]);
|
Chris@17
|
77 $this->field->save();
|
Chris@17
|
78
|
Chris@17
|
79 EntityFormDisplay::load('entity_test.entity_test.default')
|
Chris@17
|
80 ->setComponent($field_name, ['type' => $widget_type])
|
Chris@17
|
81 ->save();
|
Chris@17
|
82
|
Chris@17
|
83 $this->displayOptions = [
|
Chris@17
|
84 'type' => $formatter_type,
|
Chris@17
|
85 'label' => 'hidden',
|
Chris@17
|
86 ];
|
Chris@17
|
87
|
Chris@17
|
88 EntityViewDisplay::create([
|
Chris@17
|
89 'targetEntityType' => $this->field->getTargetEntityTypeId(),
|
Chris@17
|
90 'bundle' => $this->field->getTargetBundle(),
|
Chris@17
|
91 'mode' => 'full',
|
Chris@17
|
92 'status' => TRUE,
|
Chris@17
|
93 ])->setComponent($field_name, $this->displayOptions)
|
Chris@17
|
94 ->save();
|
Chris@17
|
95 }
|
Chris@17
|
96
|
Chris@17
|
97 /**
|
Chris@17
|
98 * Tests the formatter settings.
|
Chris@17
|
99 */
|
Chris@17
|
100 public function testSettings() {
|
Chris@17
|
101 $this->drupalGet('entity_test/structure/entity_test/display');
|
Chris@17
|
102
|
Chris@17
|
103 $edit = [
|
Chris@17
|
104 'fields[field_timestamp][region]' => 'content',
|
Chris@17
|
105 'fields[field_timestamp][type]' => 'timestamp_ago',
|
Chris@17
|
106 ];
|
Chris@17
|
107 $this->drupalPostForm(NULL, $edit, t('Save'));
|
Chris@17
|
108
|
Chris@17
|
109 $this->drupalPostForm(NULL, [], 'field_timestamp_settings_edit');
|
Chris@17
|
110 $edit = [
|
Chris@17
|
111 'fields[field_timestamp][settings_edit_form][settings][future_format]' => 'ends in @interval',
|
Chris@17
|
112 'fields[field_timestamp][settings_edit_form][settings][past_format]' => 'started @interval ago',
|
Chris@18
|
113 'fields[field_timestamp][settings_edit_form][settings][granularity]' => 1,
|
Chris@17
|
114 ];
|
Chris@17
|
115 $this->drupalPostForm(NULL, $edit, 'Update');
|
Chris@17
|
116 $this->drupalPostForm(NULL, [], 'Save');
|
Chris@17
|
117
|
Chris@18
|
118 $this->assertSession()->pageTextContains('ends in 1 year');
|
Chris@18
|
119 $this->assertSession()->pageTextContains('started 1 year ago');
|
Chris@17
|
120 }
|
Chris@17
|
121
|
Chris@17
|
122 }
|