3 namespace Drupal\Tests\language\Kernel;
5 use Drupal\language\Entity\ConfigurableLanguage;
6 use Drupal\language\Exception\DeleteDefaultLanguageException;
9 * Compares the default language from $GLOBALS against the dependency injected
14 class LanguageDependencyInjectionTest extends LanguageTestBase {
17 * Test dependency injected languages against a new Language object.
19 * @see \Drupal\Core\Language\LanguageInterface
21 public function testDependencyInjectedNewLanguage() {
22 $expected = $this->languageManager->getDefaultLanguage();
23 $result = $this->languageManager->getCurrentLanguage();
24 foreach ($expected as $property => $value) {
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]));
30 * Test dependency injected Language object against a new default language
33 * @see \Drupal\Core\Language\Language
35 public function testDependencyInjectedNewDefaultLanguage() {
36 $default_language = ConfigurableLanguage::load(\Drupal::languageManager()->getDefaultLanguage()->getId());
37 // Change the language default object to different values.
38 ConfigurableLanguage::createFromLangcode('fr')->save();
39 $this->config('system.site')->set('default_langcode', 'fr')->save();
41 // The language system creates a Language object which contains the
42 // same properties as the new default language object.
43 $result = \Drupal::languageManager()->getCurrentLanguage();
44 $this->assertIdentical($result->getId(), 'fr');
46 // Delete the language to check that we fallback to the default.
48 entity_delete_multiple('configurable_language', ['fr']);
49 $this->fail('Expected DeleteDefaultLanguageException thrown.');
51 catch (DeleteDefaultLanguageException $e) {
52 $this->pass('Expected DeleteDefaultLanguageException thrown.');
55 // Re-save the previous default language and the delete should work.
56 $this->config('system.site')->set('default_langcode', $default_language->getId())->save();
58 entity_delete_multiple('configurable_language', ['fr']);
59 $result = \Drupal::languageManager()->getCurrentLanguage();
60 $this->assertIdentical($result->getId(), $default_language->getId());