Version 1
[yaffs-website] / web / core / modules / language / tests / src / Kernel / LanguageDependencyInjectionTest.php
diff --git a/web/core/modules/language/tests/src/Kernel/LanguageDependencyInjectionTest.php b/web/core/modules/language/tests/src/Kernel/LanguageDependencyInjectionTest.php
new file mode 100644 (file)
index 0000000..287ab95
--- /dev/null
@@ -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());
+  }
+
+}