You are here

public function DateRecurBasicWidgetTest::testRequiredField in Recurring Dates Field 3.0.x

Same name and namespace in other branches
  1. 8.2 tests/src/Functional/DateRecurBasicWidgetTest.php \Drupal\Tests\date_recur\Functional\DateRecurBasicWidgetTest::testRequiredField()
  2. 3.x tests/src/Functional/DateRecurBasicWidgetTest.php \Drupal\Tests\date_recur\Functional\DateRecurBasicWidgetTest::testRequiredField()
  3. 3.1.x tests/src/Functional/DateRecurBasicWidgetTest.php \Drupal\Tests\date_recur\Functional\DateRecurBasicWidgetTest::testRequiredField()

Tests if field is set to required, only start date is required.

End date must never be required, value is copied over from start date.

File

tests/src/Functional/DateRecurBasicWidgetTest.php, line 248

Class

DateRecurBasicWidgetTest
Tests date recur basic widget.

Namespace

Drupal\Tests\date_recur\Functional

Code

public function testRequiredField() {
  $field_storage = FieldStorageConfig::create([
    'entity_type' => 'entity_test',
    'field_name' => 'foo',
    'type' => 'date_recur',
    'settings' => [
      'datetime_type' => DateRecurItem::DATETIME_TYPE_DATETIME,
    ],
  ]);
  $field_storage
    ->save();
  $field = [
    'field_name' => 'foo',
    'entity_type' => 'entity_test',
    'bundle' => 'entity_test',
    // Set instance to required.
    'required' => TRUE,
  ];
  FieldConfig::create($field)
    ->save();
  $display = \Drupal::service('entity_display.repository')
    ->getFormDisplay('entity_test', 'entity_test', 'default');
  $component = $display
    ->getComponent('foo');
  $component['region'] = 'content';
  $component['type'] = 'date_recur_basic_widget';
  $component['settings'] = [];
  $display
    ->setComponent('foo', $component);
  $display
    ->save();
  $edit = [
    'foo[0][value][date]' => '',
    'foo[0][value][time]' => '',
    'foo[0][end_value][date]' => '',
    'foo[0][end_value][time]' => '',
    'foo[0][timezone]' => 'America/Chicago',
    'foo[0][rrule]' => 'FREQ=DAILY',
  ];
  $this
    ->drupalGet(Url::fromRoute('entity.entity_test.add_form'));
  $this
    ->submitForm($edit, 'Save');
  $this
    ->assertSession()
    ->pageTextContains('The Start date is required.');
  $this
    ->assertSession()
    ->pageTextNotContains('The End date is required.');
}