use Drupal\Core\Routing\RouteProvider;
use Drupal\Core\State\State;
use Drupal\KernelTests\KernelTestBase;
+use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\Tests\Core\Routing\RoutingFixtures;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Modules to enable.
*/
- public static $modules = ['url_alter_test', 'system'];
+ public static $modules = ['url_alter_test', 'system', 'language'];
/**
* A collection of shared fixture data for tests.
*/
public function testRouteCaching() {
$connection = Database::getConnection();
- $provider = new RouteProvider($connection, $this->state, $this->currentPath, $this->cache, $this->pathProcessor, $this->cacheTagsInvalidator, 'test_routes');
+ $language_manager = \Drupal::languageManager();
+ $provider = new RouteProvider($connection, $this->state, $this->currentPath, $this->cache, $this->pathProcessor, $this->cacheTagsInvalidator, 'test_routes', $language_manager);
$this->fixtures->createTables($connection);
$request = Request::create($path, 'GET');
$provider->getRouteCollectionForRequest($request);
- $cache = $this->cache->get('route:/path/add/one:');
+ $cache = $this->cache->get('route:en:/path/add/one:');
$this->assertEqual('/path/add/one', $cache->data['path']);
$this->assertEqual([], $cache->data['query']);
$this->assertEqual(3, count($cache->data['routes']));
$request = Request::create($path, 'GET');
$provider->getRouteCollectionForRequest($request);
- $cache = $this->cache->get('route:/path/add/one:foo=bar');
+ $cache = $this->cache->get('route:en:/path/add/one:foo=bar');
$this->assertEqual('/path/add/one', $cache->data['path']);
$this->assertEqual(['foo' => 'bar'], $cache->data['query']);
$this->assertEqual(3, count($cache->data['routes']));
$request = Request::create($path, 'GET');
$provider->getRouteCollectionForRequest($request);
- $cache = $this->cache->get('route:/path/1/one:');
+ $cache = $this->cache->get('route:en:/path/1/one:');
$this->assertEqual('/path/1/one', $cache->data['path']);
$this->assertEqual([], $cache->data['query']);
$this->assertEqual(2, count($cache->data['routes']));
$request = Request::create($path, 'GET');
$provider->getRouteCollectionForRequest($request);
- $cache = $this->cache->get('route:/path/add-one:');
+ $cache = $this->cache->get('route:en:/path/add-one:');
$this->assertEqual('/path/add/one', $cache->data['path']);
$this->assertEqual([], $cache->data['query']);
$this->assertEqual(3, count($cache->data['routes']));
+
+ // Test with a different current language by switching out the default
+ // language.
+ $swiss = ConfigurableLanguage::createFromLangcode('gsw-berne');
+ $language_manager->reset();
+ \Drupal::service('language.default')->set($swiss);
+
+ $path = '/path/add-one';
+ $request = Request::create($path, 'GET');
+ $provider->getRouteCollectionForRequest($request);
+
+ $cache = $this->cache->get('route:gsw-berne:/path/add-one:');
+ $this->assertEquals('/path/add/one', $cache->data['path']);
+ $this->assertEquals([], $cache->data['query']);
+ $this->assertEquals(3, count($cache->data['routes']));
}
/**