Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\language\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\language\Entity\ConfigurableLanguage;
|
Chris@0
|
6 use Drupal\language\Exception\DeleteDefaultLanguageException;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * Compares the default language from $GLOBALS against the dependency injected
|
Chris@0
|
10 * language object.
|
Chris@0
|
11 *
|
Chris@0
|
12 * @group language
|
Chris@0
|
13 */
|
Chris@0
|
14 class LanguageDependencyInjectionTest extends LanguageTestBase {
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * Test dependency injected languages against a new Language object.
|
Chris@0
|
18 *
|
Chris@0
|
19 * @see \Drupal\Core\Language\LanguageInterface
|
Chris@0
|
20 */
|
Chris@0
|
21 public function testDependencyInjectedNewLanguage() {
|
Chris@0
|
22 $expected = $this->languageManager->getDefaultLanguage();
|
Chris@0
|
23 $result = $this->languageManager->getCurrentLanguage();
|
Chris@0
|
24 foreach ($expected as $property => $value) {
|
Chris@0
|
25 $this->assertEqual($expected->$property, $result->$property, format_string('The dependency injected language object %prop property equals the new Language object %prop property.', ['%prop' => $property]));
|
Chris@0
|
26 }
|
Chris@0
|
27 }
|
Chris@0
|
28
|
Chris@0
|
29 /**
|
Chris@0
|
30 * Test dependency injected Language object against a new default language
|
Chris@0
|
31 * object.
|
Chris@0
|
32 *
|
Chris@0
|
33 * @see \Drupal\Core\Language\Language
|
Chris@0
|
34 */
|
Chris@0
|
35 public function testDependencyInjectedNewDefaultLanguage() {
|
Chris@0
|
36 $default_language = ConfigurableLanguage::load(\Drupal::languageManager()->getDefaultLanguage()->getId());
|
Chris@0
|
37 // Change the language default object to different values.
|
Chris@0
|
38 ConfigurableLanguage::createFromLangcode('fr')->save();
|
Chris@0
|
39 $this->config('system.site')->set('default_langcode', 'fr')->save();
|
Chris@0
|
40
|
Chris@0
|
41 // The language system creates a Language object which contains the
|
Chris@0
|
42 // same properties as the new default language object.
|
Chris@0
|
43 $result = \Drupal::languageManager()->getCurrentLanguage();
|
Chris@0
|
44 $this->assertIdentical($result->getId(), 'fr');
|
Chris@0
|
45
|
Chris@0
|
46 // Delete the language to check that we fallback to the default.
|
Chris@0
|
47 try {
|
Chris@0
|
48 entity_delete_multiple('configurable_language', ['fr']);
|
Chris@0
|
49 $this->fail('Expected DeleteDefaultLanguageException thrown.');
|
Chris@0
|
50 }
|
Chris@0
|
51 catch (DeleteDefaultLanguageException $e) {
|
Chris@0
|
52 $this->pass('Expected DeleteDefaultLanguageException thrown.');
|
Chris@0
|
53 }
|
Chris@0
|
54
|
Chris@0
|
55 // Re-save the previous default language and the delete should work.
|
Chris@0
|
56 $this->config('system.site')->set('default_langcode', $default_language->getId())->save();
|
Chris@0
|
57
|
Chris@0
|
58 entity_delete_multiple('configurable_language', ['fr']);
|
Chris@0
|
59 $result = \Drupal::languageManager()->getCurrentLanguage();
|
Chris@0
|
60 $this->assertIdentical($result->getId(), $default_language->getId());
|
Chris@0
|
61 }
|
Chris@0
|
62
|
Chris@0
|
63 }
|