Yaffs site version 1.1
[yaffs-website] / vendor / drupal-composer / drupal-scaffold / tests / FetcherTest.php
diff --git a/vendor/drupal-composer/drupal-scaffold/tests/FetcherTest.php b/vendor/drupal-composer/drupal-scaffold/tests/FetcherTest.php
new file mode 100644 (file)
index 0000000..39b3e73
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * @file
+ * Contains \DrupalComposer\DrupalScaffold\Tests\FetcherTest.
+ */
+
+namespace DrupalComposer\DrupalScaffold\Tests;
+
+use Composer\Downloader\TransportException;
+use Composer\IO\NullIO;
+use Composer\Util\Filesystem;
+use Composer\Util\RemoteFilesystem;
+use DrupalComposer\DrupalScaffold\FileFetcher;
+use DrupalComposer\DrupalScaffold\InitialFileFetcher;
+
+class FetcherTest extends \PHPUnit_Framework_TestCase {
+
+  /**
+   * @var \Composer\Util\Filesystem
+   */
+  protected $fs;
+
+  /**
+   * @var string
+   */
+  protected $tmpDir;
+
+  /**
+   * @var string
+   */
+  protected $rootDir;
+
+  /**
+   * @var string
+   */
+  protected $tmpReleaseTag;
+
+  /**
+   * SetUp test
+   */
+  public function setUp() {
+    $this->rootDir = realpath(realpath(__DIR__ . '/..'));
+
+    // Prepare temp directory.
+    $this->fs = new Filesystem();
+    $this->tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'drupal-scaffold';
+    $this->ensureDirectoryExistsAndClear($this->tmpDir);
+
+    chdir($this->tmpDir);
+  }
+
+  /**
+   * Makes sure the given directory exists and has no content.
+   *
+   * @param string $directory
+   */
+  protected function ensureDirectoryExistsAndClear($directory) {
+    if (is_dir($directory)) {
+      $this->fs->removeDirectory($directory);
+    }
+    mkdir($directory, 0777, true);
+  }
+
+  public function testFetch() {
+    $fetcher = new FileFetcher(new RemoteFilesystem(new NullIO()), 'http://cgit.drupalcode.org/drupal/plain/{path}?h={version}', ['.htaccess', 'sites/default/default.settings.php']);
+    $fetcher->fetch('8.1.1', $this->tmpDir);
+    $this->assertFileExists($this->tmpDir . '/.htaccess');
+    $this->assertFileExists($this->tmpDir . '/sites/default/default.settings.php');
+  }
+
+  /**
+   * Tests version specific files.
+   */
+  public function testFetchVersionSpecific() {
+    $fetcher = new FileFetcher(new RemoteFilesystem(new NullIO()), 'http://cgit.drupalcode.org/drupal/plain/{path}?h={version}', ['.eslintrc', '.eslintrc.json']);
+
+    $this->setExpectedException(TransportException::class);
+    $fetcher->fetch('8.2.x', $this->tmpDir);
+
+    $this->assertFileExists($this->tmpDir . '/.eslintrc');
+    $this->assertFileNotExists($this->tmpDir . '/.eslintrc.json');
+
+    // Remove downloaded files to retest with 8.3.x.
+    @unlink($this->tmpDir . '/.eslintrc');
+
+    $this->setExpectedException(TransportException::class);
+    $fetcher->fetch('8.3.x', $this->tmpDir);
+
+    $this->assertFileExists($this->tmpDir . '/.eslintrc.json');
+    $this->assertFileNotExists($this->tmpDir . '/.eslintrc');
+  }
+
+  public function testInitialFetch() {
+    $fetcher = new InitialFileFetcher(new RemoteFilesystem(new NullIO()), 'http://cgit.drupalcode.org/drupal/plain/{path}?h={version}', ['sites/default/default.settings.php' => 'sites/default/settings.php']);
+    $fetcher->fetch('8.1.1', $this->tmpDir);
+    $this->assertFileExists($this->tmpDir . '/sites/default/settings.php');
+  }
+}