public function DrupalDateTimeTest::testDateTimezone in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Datetime/DrupalDateTimeTest.php \Drupal\system\Tests\Datetime\DrupalDateTimeTest::testDateTimezone()
Test that DrupalDateTime can detect the right timezone to use. Test with a variety of less commonly used timezone names to help ensure that the system timezone will be different than the stated timezones.
File
- core/
modules/ system/ src/ Tests/ Datetime/ DrupalDateTimeTest.php, line 54 - Contains \Drupal\system\Tests\Datetime\DrupalDateTimeTest.
Class
- DrupalDateTimeTest
- Tests DrupalDateTime functionality.
Namespace
Drupal\system\Tests\DatetimeCode
public function testDateTimezone() {
$date_string = '2007-01-31 21:00:00';
// Make sure no site timezone has been set.
$this
->config('system.date')
->set('timezone.user.configurable', 0)
->set('timezone.default', NULL)
->save();
// Detect the system timezone.
$system_timezone = date_default_timezone_get();
// Create a date object with an unspecified timezone, which should
// end up using the system timezone.
$date = new DrupalDateTime($date_string);
$timezone = $date
->getTimezone()
->getName();
$this
->assertTrue($timezone == $system_timezone, 'DrupalDateTime uses the system timezone when there is no site timezone.');
// Create a date object with a specified timezone.
$date = new DrupalDateTime($date_string, 'America/Yellowknife');
$timezone = $date
->getTimezone()
->getName();
$this
->assertTrue($timezone == 'America/Yellowknife', 'DrupalDateTime uses the specified timezone if provided.');
// Set a site timezone.
$this
->config('system.date')
->set('timezone.default', 'Europe/Warsaw')
->save();
// Create a date object with an unspecified timezone, which should
// end up using the site timezone.
$date = new DrupalDateTime($date_string);
$timezone = $date
->getTimezone()
->getName();
$this
->assertTrue($timezone == 'Europe/Warsaw', 'DrupalDateTime uses the site timezone if provided.');
// Create user.
$this
->config('system.date')
->set('timezone.user.configurable', 1)
->save();
$test_user = $this
->drupalCreateUser(array());
$this
->drupalLogin($test_user);
// Set up the user with a different timezone than the site.
$edit = array(
'mail' => $test_user
->getEmail(),
'timezone' => 'Asia/Manila',
);
$this
->drupalPostForm('user/' . $test_user
->id() . '/edit', $edit, t('Save'));
// Reload the user and reset the timezone in AccountProxy::setAccount().
\Drupal::entityManager()
->getStorage('user')
->resetCache();
$this->container
->get('current_user')
->setAccount(User::load($test_user
->id()));
// Create a date object with an unspecified timezone, which should
// end up using the user timezone.
$date = new DrupalDateTime($date_string);
$timezone = $date
->getTimezone()
->getName();
$this
->assertTrue($timezone == 'Asia/Manila', 'DrupalDateTime uses the user timezone, if configurable timezones are used and it is set.');
}