Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / locale / tests / src / Functional / LocaleTranslationDownloadTest.php
diff --git a/web/core/modules/locale/tests/src/Functional/LocaleTranslationDownloadTest.php b/web/core/modules/locale/tests/src/Functional/LocaleTranslationDownloadTest.php
new file mode 100644 (file)
index 0000000..a6f43d4
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+namespace Drupal\Tests\locale\Functional;
+
+use Drupal\Core\StreamWrapper\PublicStream;
+use Drupal\language\Entity\ConfigurableLanguage;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * Tests locale translation download.
+ *
+ * @group locale
+ */
+class LocaleTranslationDownloadTest extends LocaleUpdateBase {
+
+  /**
+   * The virtual file stream for storing translations.
+   *
+   * @var \org\bovigo\vfs\vfsStreamDirectory
+   */
+  protected $translationsStream;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $moduleHandler = $this->container->get('module_handler');
+    $moduleHandler->loadInclude('locale', 'inc', 'locale.batch');
+    ConfigurableLanguage::createFromLangcode('de')->save();
+
+    // Let the translations:// stream wrapper point to a virtual file system to
+    // make it independent from the test environment.
+    $this->translationsStream = vfsStream::setup('translations');
+    \Drupal::configFactory()->getEditable('locale.settings')
+      ->set('translation.path', $this->translationsStream->url())
+      ->save();
+  }
+
+  /**
+   * Tests translation download from remote sources.
+   */
+  public function testUpdateImportSourceRemote() {
+
+    // Provide remote and 'previously' downloaded translation file.
+    $this->setTranslationFiles();
+    vfsStream::create([
+      'contrib_module_one-8.x-1.1.de._po' => '__old_content__',
+    ], $this->translationsStream);
+
+    $url = \Drupal::service('url_generator')->generateFromRoute('<front>', [], ['absolute' => TRUE]);
+    $uri = $url . PublicStream::basePath() . '/remote/8.x/contrib_module_one/contrib_module_one-8.x-1.1.de._po';
+    $source_file = (object) [
+      'uri' => $uri,
+    ];
+
+    $result = locale_translation_download_source($source_file, 'translations://');
+
+    $this->assertEquals('translations://contrib_module_one-8.x-1.1.de._po', $result->uri);
+    $this->assertFalse(file_exists('translations://contrib_module_one-8.x-1.1.de_0._po'));
+    $this->assertTrue(file_exists('translations://contrib_module_one-8.x-1.1.de._po'));
+    $this->assertNotContains('__old_content__', file_get_contents('translations://contrib_module_one-8.x-1.1.de._po'));
+  }
+
+}