1<?php
2
3namespace Drupal\Tests\system\Kernel;
4
5use Drupal\KernelTests\KernelTestBase;
6use Drupal\Tests\user\Traits\UserCreationTrait;
7use Symfony\Component\HttpFoundation\Request;
8use Symfony\Component\HttpKernel\Event\RequestEvent;
9use Symfony\Component\HttpKernel\HttpKernelInterface;
10use Symfony\Component\HttpKernel\KernelEvents;
11
12/**
13 * @coversDefaultClass \Drupal\system\TimeZoneResolver
14 * @group system
15 */
16class TimezoneResolverTest extends KernelTestBase {
17
18  use UserCreationTrait;
19
20  /**
21   * {@inheritdoc}
22   */
23  protected static $modules = [
24    'system',
25    'user',
26  ];
27
28  /**
29   * Tests time zone resolution.
30   */
31  public function testGetTimeZone() {
32    $this->installEntitySchema('user');
33    $this->installSchema('system', ['sequences']);
34    $this->installConfig(['system']);
35
36    // Check the default test timezone.
37    $this->assertEquals('Australia/Sydney', date_default_timezone_get());
38
39    // Test the configured system timezone.
40    $configFactory = $this->container->get('config.factory');
41    $timeZoneConfig = $configFactory->getEditable('system.date');
42    $timeZoneConfig->set('timezone.default', 'Australia/Adelaide');
43    $timeZoneConfig->save();
44
45    $eventDispatcher = $this->container->get('event_dispatcher');
46    $kernel = $this->container->get('kernel');
47
48    $eventDispatcher->dispatch(new RequestEvent($kernel, Request::create('http://www.example.com'), HttpKernelInterface::MASTER_REQUEST, KernelEvents::REQUEST));
49
50    $this->assertEquals('Australia/Adelaide', date_default_timezone_get());
51
52    $user = $this->createUser([]);
53    $user->set('timezone', 'Australia/Lord_Howe');
54    $user->save();
55
56    $this->setCurrentUser($user);
57
58    $this->assertEquals('Australia/Lord_Howe', date_default_timezone_get());
59
60  }
61
62}
63