function DatetimeElementFormTest::testRangeValidate

Tests that year range is validated.

File

core/tests/Drupal/KernelTests/Core/Datetime/DatetimeElementFormTest.php, line 241

Class

DatetimeElementFormTest
Tests DatetimeElement functionality.

Namespace

Drupal\KernelTests\Core\Datetime

Code

public function testRangeValidate() : void {
  // Tests with a date after maximum.
  $formState = new FormState();
  $formState->setValue([
    'range_datetime_element',
    'date',
  ], '4000-01-01');
  $formState->setValue([
    'range_datetime_element',
    'time',
  ], '10:10');
  $form = \Drupal::formBuilder()->getForm($this);
  \Drupal::formBuilder()->submitForm($this, $formState);
  $this->assertEquals('The range_datetime_element date is invalid. Date should be in the 1850-3000 year range.', $formState->getError($form['range_datetime_element']));
  // Tests with a date before minimum.
  $formState = new FormState();
  $formState->setValue([
    'range_datetime_element',
    'date',
  ], '1000-01-01');
  $formState->setValue([
    'range_datetime_element',
    'time',
  ], '10:10');
  $form = \Drupal::formBuilder()->getForm($this);
  \Drupal::formBuilder()->submitForm($this, $formState);
  $this->assertEquals('The range_datetime_element date is invalid. Date should be in the 1850-3000 year range.', $formState->getError($form['range_datetime_element']));
  // Tests with a date barely outside range.
  $formState = new FormState();
  $formState->setValue([
    'range_datetime_element',
    'date',
  ], '3001-01-01');
  $formState->setValue([
    'range_datetime_element',
    'time',
  ], '00:00');
  $form = \Drupal::formBuilder()->getForm($this);
  \Drupal::formBuilder()->submitForm($this, $formState);
  $this->assertEquals('The range_datetime_element date is invalid. Date should be in the 1850-3000 year range.', $formState->getError($form['range_datetime_element']));
  // Tests with a date inside range.
  $formState = new FormState();
  $formState->setValue([
    'range_datetime_element',
    'date',
  ], '2000-01-01');
  $formState->setValue([
    'range_datetime_element',
    'time',
  ], '10:10');
  \Drupal::formBuilder()->submitForm($this, $formState);
  $this->assertEmpty($formState->getError($form['range_datetime_element']));
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.