function DatetimeFormElementTest::testDatetimeLocalProcessDatetime

Checks expected values are returned by ::processDatetime().

Test only applied to 'datetime-local' date element.

@covers ::processDatetime

File

core/tests/Drupal/KernelTests/Core/Datetime/Element/DatetimeFormElementTest.php, line 144

Class

DatetimeFormElementTest
Tests static callbacks returns and form submission with datetime elements.

Namespace

Drupal\KernelTests\Core\Datetime\Element

Code

public function testDatetimeLocalProcessDatetime() : void {
  $form = [
    'datetime_local_picker' => [
      '#type' => 'datetime',
      '#date_date_element' => 'datetime-local',
      '#date_date_format' => 'Y-m-d',
      '#date_time_element' => 'none',
      '#date_time_format' => 'H:i:s',
      '#value' => [
        'object' => new DrupalDateTime('2025-02-18T12:00'),
        'date' => '2025-02-18',
        'time' => '12:00:00',
      ],
      '#date_year_range' => '1900:2050',
      '#attributes' => [],
      '#required' => TRUE,
    ],
    'submit' => [
      '#type' => 'submit',
      '#value' => 'Submit',
    ],
  ];
  $element = $form['datetime_local_picker'];
  $form_state = new FormState();
  $form_state->setValue('datetime_local_picker', [
    'date' => '2025-02-18T12:00',
  ]);
  $result = Datetime::processDatetime($element, $form_state, $form);
  $this->assertIsArray($result);
  $this->assertArrayHasKey('date', $result);
  $this->assertIsArray($result['date']);
  $this->assertArrayHasKey('#error_no_message', $result['date']);
  $this->assertTrue($result['date']['#error_no_message']);
  $this->assertArrayHasKey('#attributes', $result['date']);
  $this->assertArrayHasKey('min', $result['date']['#attributes']);
  $this->assertEquals('1900-01-01T00:00:00', $result['date']['#attributes']['min']);
  $this->assertArrayHasKey('max', $result['date']['#attributes']);
  $this->assertEquals('2050-12-31T23:59:59', $result['date']['#attributes']['max']);
  $this->assertArrayNotHasKey('time', $result);
}

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