function TimezoneTest::setUp

Same name in other branches
  1. 8.9.x core/modules/simpletest/src/Tests/TimeZoneTest.php \Drupal\simpletest\Tests\TimeZoneTest::setUp()
  2. 8.9.x core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php \Drupal\KernelTests\Core\Datetime\Element\TimezoneTest::setUp()
  3. 10 core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php \Drupal\KernelTests\Core\Datetime\Element\TimezoneTest::setUp()
  4. 11.x core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php \Drupal\KernelTests\Core\Datetime\Element\TimezoneTest::setUp()

Overrides EntityKernelTestBase::setUp

File

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

Class

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

Namespace

Drupal\KernelTests\Core\Datetime\Element

Code

protected function setUp() : void {
    parent::setUp();
    $this->installConfig([
        'system',
    ]);
    // Setup the background time zones.
    $this->timezones['php initial'] = date_default_timezone_get();
    $user = $this->createUser();
    $user->set('timezone', $this->timezones['user'])
        ->save();
    // This also sets PHP's assumed time.
    \Drupal::currentUser()->setAccount($user);
    // Set a reference date to use in tests.
    $this->date = new DrupalDatetime('2000-01-01 12:00', NULL);
    // Create arrays listing the dates and times of $this->date formatted
    // according to the various timezones of $this->timezones.
    $this->dateFormat = DateFormat::load('html_date')->getPattern();
    $this->timeFormat = DateFormat::load('html_time')->getPattern();
    $date = clone $this->date;
    foreach ($this->timezones as $label => $timezone) {
        $date->setTimezone(new \DateTimeZone($timezone));
        $this->formattedDates['date'][$label] = $date->format($this->dateFormat);
        $this->formattedDates['time'][$label] = $date->format($this->timeFormat);
        $this->formattedDates['day'][$label] = $date->format('j');
        $this->formattedDates['month'][$label] = $date->format('n');
        $this->formattedDates['year'][$label] = $date->format('Y');
        $this->formattedDates['hour'][$label] = $date->format('G');
        $this->formattedDates['minute'][$label] = $date->format('i');
        $this->formattedDates['second'][$label] = $date->format('s');
    }
    // Validate the timezone setup.
    $this->assertEquals($this->timezones['user'], date_default_timezone_get(), 'Subsequent tests assume specific value for date_default_timezone_get().');
    $this->assertEquals(date_default_timezone_get(), $this->date
        ->getTimezone()
        ->getName(), 'Subsequent tests assume DrupalDateTime objects default to Drupal user time zone if none specified');
}

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