You are here

public function DateRecurBasicWidgetTest::testRruleMaxLengthError 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::testRruleMaxLengthError()
  2. 3.x tests/src/Functional/DateRecurBasicWidgetTest.php \Drupal\Tests\date_recur\Functional\DateRecurBasicWidgetTest::testRruleMaxLengthError()
  3. 3.1.x tests/src/Functional/DateRecurBasicWidgetTest.php \Drupal\Tests\date_recur\Functional\DateRecurBasicWidgetTest::testRruleMaxLengthError()

Tests an error is displayed if a long RRULE is submitted.

File

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

Class

DateRecurBasicWidgetTest
Tests date recur basic widget.

Namespace

Drupal\Tests\date_recur\Functional

Code

public function testRruleMaxLengthError() {
  $field_storage = FieldStorageConfig::create([
    'entity_type' => 'entity_test',
    'field_name' => 'foo',
    'type' => 'date_recur',
    'settings' => [
      'datetime_type' => DateRecurItem::DATETIME_TYPE_DATETIME,
      // Test a super short length.
      'rrule_max_length' => 20,
    ],
  ]);
  $field_storage
    ->save();
  $field = [
    'field_name' => 'foo',
    'entity_type' => 'entity_test',
    'bundle' => 'entity_test',
  ];
  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]' => '2008-06-17',
    'foo[0][value][time]' => '12:00:00',
    'foo[0][end_value][date]' => '2008-06-17',
    'foo[0][end_value][time]' => '12:00:00',
    'foo[0][timezone]' => 'America/Chicago',
    'foo[0][rrule]' => 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=3',
  ];
  $this
    ->drupalGet(Url::fromRoute('entity.entity_test.add_form'));
  $this
    ->submitForm($edit, 'Save');
  $this
    ->assertSession()
    ->pageTextContains('This value is too long. It should have 20 characters or less.');
}