You are here

public function TimezoneTest::assertDateTimezonePropertyProcessed in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php \Drupal\KernelTests\Core\Datetime\Element\TimezoneTest::assertDateTimezonePropertyProcessed()

Asserts that elements set #date_timezone correctly.

Parameters

string $elementType: The element type to test.

Throws

\Exception

2 calls to TimezoneTest::assertDateTimezonePropertyProcessed()
TimezoneTest::testDatelistTimezonePropertyProcessed in core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php
On datelist elements test #date_timezone after ::processDatetime.
TimezoneTest::testDatetimeTimezonePropertyProcessed in core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php
On datetime elements test #date_timezone after ::processDatetime.

File

core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php, line 330

Class

TimezoneTest
Tests the timezone handling of datetime and datelist element types.

Namespace

Drupal\KernelTests\Core\Datetime\Element

Code

public function assertDateTimezonePropertyProcessed($elementType) {
  $this->elementType = $elementType;

  // Simulate form being loaded and default values displayed to user.
  $form_state = new FormState();
  $form_builder = $this->container
    ->get('form_builder');
  $this
    ->setupForm($form_state, $form_builder);

  // Check the #date_timezone property on each processed test element.
  $wrongTimezones = [];
  foreach ($form_state
    ->getCompleteForm() as $elementName => $element) {
    if (isset($element['#type']) && $element['#type'] === $this->elementType) {

      // Check the correct timezone is set on the value object.
      $actualTimezone = array_search($element['#date_timezone'], $this->timezones, TRUE);
      if ($element['#test_expect_timezone'] !== $actualTimezone) {
        $wrongTimezones[$element['#title']] = [
          $element['#test_expect_timezone'],
          $actualTimezone,
        ];
      }
    }
    $this
      ->assertEquals($this->timezones['user'], date_default_timezone_get(), 'Subsequent tests assume specific value for date_default_timezone_get().');
    $message = "The correct timezone should be set on the processed {$this->elementType}  elements: (expected, actual) \n" . print_r($wrongTimezones, TRUE);
    $this
      ->assertCount(0, $wrongTimezones, $message);
  }
}