annotate core/tests/Drupal/FunctionalTests/Datetime/TimestampAgoFormatterTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
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 }