function TimezoneTest::assertDateTimezonePropertyProcessed

Same name and namespace in other branches
  1. 9 core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php \Drupal\KernelTests\Core\Datetime\Element\TimezoneTest::assertDateTimezonePropertyProcessed()
  2. 8.9.x core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php \Drupal\KernelTests\Core\Datetime\Element\TimezoneTest::assertDateTimezonePropertyProcessed()
  3. 11.x core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php \Drupal\KernelTests\Core\Datetime\Element\TimezoneTest::assertDateTimezonePropertyProcessed()

Asserts that elements set #date_timezone correctly.

@internal

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 336

Class

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

Namespace

Drupal\KernelTests\Core\Datetime\Element

Code

public function assertDateTimezonePropertyProcessed(string $elementType) : void {
  $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);
  }
}

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