You are here

public function DateRangeFieldTest::testDateStorageSettings in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php \Drupal\Tests\datetime_range\Functional\DateRangeFieldTest::testDateStorageSettings()
  2. 10 core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php \Drupal\Tests\datetime_range\Functional\DateRangeFieldTest::testDateStorageSettings()

Tests that 'Date' field storage setting form is disabled if field has data.

File

core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php, line 1365

Class

DateRangeFieldTest
Tests Daterange field functionality.

Namespace

Drupal\Tests\datetime_range\Functional

Code

public function testDateStorageSettings() {

  // Create a test content type.
  $this
    ->drupalCreateContentType([
    'type' => 'date_content',
  ]);

  // Create a field storage with settings to validate.
  $field_name = mb_strtolower($this
    ->randomMachineName());
  $field_storage = FieldStorageConfig::create([
    'field_name' => $field_name,
    'entity_type' => 'node',
    'type' => 'daterange',
    'settings' => [
      'datetime_type' => DateRangeItem::DATETIME_TYPE_DATE,
    ],
  ]);
  $field_storage
    ->save();
  $field = FieldConfig::create([
    'field_storage' => $field_storage,
    'field_name' => $field_name,
    'bundle' => 'date_content',
  ]);
  $field
    ->save();
  \Drupal::service('entity_display.repository')
    ->getFormDisplay('node', 'date_content')
    ->setComponent($field_name, [
    'type' => 'datetime_default',
  ])
    ->save();
  $edit = [
    'title[0][value]' => $this
      ->randomString(),
    'body[0][value]' => $this
      ->randomString(),
    $field_name . '[0][value][date]' => '2016-04-01',
    $field_name . '[0][end_value][date]' => '2016-04-02',
  ];
  $this
    ->drupalPostForm('node/add/date_content', $edit, t('Save'));
  $this
    ->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_name . '/storage');
  $result = $this
    ->xpath("//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]");
  $this
    ->assertCount(1, $result, "Changing datetime setting is disabled.");
  $this
    ->assertText('There is data for this field in the database. The field settings can no longer be changed.');
}