annotate core/modules/language/tests/src/Kernel/LanguageDependencyInjectionTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
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 }