Mercurial > hg > isophonics-drupal-site
diff core/modules/language/tests/src/Kernel/LanguageDependencyInjectionTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/language/tests/src/Kernel/LanguageDependencyInjectionTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,63 @@ +<?php + +namespace Drupal\Tests\language\Kernel; + +use Drupal\language\Entity\ConfigurableLanguage; +use Drupal\language\Exception\DeleteDefaultLanguageException; + +/** + * Compares the default language from $GLOBALS against the dependency injected + * language object. + * + * @group language + */ +class LanguageDependencyInjectionTest extends LanguageTestBase { + + /** + * Test dependency injected languages against a new Language object. + * + * @see \Drupal\Core\Language\LanguageInterface + */ + public function testDependencyInjectedNewLanguage() { + $expected = $this->languageManager->getDefaultLanguage(); + $result = $this->languageManager->getCurrentLanguage(); + foreach ($expected as $property => $value) { + $this->assertEqual($expected->$property, $result->$property, format_string('The dependency injected language object %prop property equals the new Language object %prop property.', ['%prop' => $property])); + } + } + + /** + * Test dependency injected Language object against a new default language + * object. + * + * @see \Drupal\Core\Language\Language + */ + public function testDependencyInjectedNewDefaultLanguage() { + $default_language = ConfigurableLanguage::load(\Drupal::languageManager()->getDefaultLanguage()->getId()); + // Change the language default object to different values. + ConfigurableLanguage::createFromLangcode('fr')->save(); + $this->config('system.site')->set('default_langcode', 'fr')->save(); + + // The language system creates a Language object which contains the + // same properties as the new default language object. + $result = \Drupal::languageManager()->getCurrentLanguage(); + $this->assertIdentical($result->getId(), 'fr'); + + // Delete the language to check that we fallback to the default. + try { + entity_delete_multiple('configurable_language', ['fr']); + $this->fail('Expected DeleteDefaultLanguageException thrown.'); + } + catch (DeleteDefaultLanguageException $e) { + $this->pass('Expected DeleteDefaultLanguageException thrown.'); + } + + // Re-save the previous default language and the delete should work. + $this->config('system.site')->set('default_langcode', $default_language->getId())->save(); + + entity_delete_multiple('configurable_language', ['fr']); + $result = \Drupal::languageManager()->getCurrentLanguage(); + $this->assertIdentical($result->getId(), $default_language->getId()); + } + +}