class ZipTest

Same name and namespace in other branches
  1. 11.x core/tests/Drupal/KernelTests/Core/Archiver/ZipTest.php \Drupal\KernelTests\Core\Archiver\ZipTest

@coversDefaultClass \Drupal\Core\Archiver\Zip
@group zip

Hierarchy

Expanded class hierarchy of ZipTest

File

core/tests/Drupal/KernelTests/Core/Archiver/ZipTest.php, line 13

Namespace

Drupal\KernelTests\Core\Archiver
View source
class ZipTest extends ArchiverTestBase {
  
  /**
   * {@inheritdoc}
   */
  protected $archiverPluginId = 'Zip';
  
  /**
   * Tests that the Zip archive is created if it does not exist.
   */
  public function testCreateArchive() : void {
    $textFile = current($this->getTestFiles('text'));
    $archiveFilename = $this->fileSystem
      ->realpath('public://' . $this->randomMachineName() . '.zip');
    $zip = new Zip($archiveFilename, [
      'flags' => \ZipArchive::CREATE,
    ]);
    $zip->add($this->fileSystem
      ->realPath($textFile->uri));
    // Close the archive and make sure it is written to disk.
    $this->assertTrue($zip->getArchive()
      ->close(), 'Successfully closed archive.');
    $this->assertFileExists($archiveFilename, 'Archive is automatically created if the file does not exist.');
    $this->assertArchiveContainsFile($archiveFilename, $this->fileSystem
      ->realPath($textFile->uri));
  }
  
  /**
   * Tests that the Zip archiver is created and overwritten.
   */
  public function testOverwriteArchive() : void {
    // Create an archive similarly to how it's done in ::testCreateArchive.
    $files = $this->getTestFiles('text');
    $textFile = current($files);
    $archiveFilename = $this->fileSystem
      ->realpath('public://' . $this->randomMachineName() . '.zip');
    $zip = new Zip($archiveFilename, [
      'flags' => \ZipArchive::CREATE,
    ]);
    $zip->add($this->fileSystem
      ->realPath($textFile->uri));
    $zip->getArchive()
      ->close();
    $this->assertArchiveContainsFile($archiveFilename, $this->fileSystem
      ->realPath($textFile->uri));
    // Overwrite the zip with just a new text file.
    $secondTextFile = next($files);
    $zip = new Zip($archiveFilename, [
      'flags' => \ZipArchive::OVERWRITE,
    ]);
    $zip->add($this->fileSystem
      ->realpath($secondTextFile->uri));
    $zip->getArchive()
      ->close();
    $this->assertArchiveNotContainsFile($archiveFilename, $this->fileSystem
      ->realPath($textFile->uri));
    $this->assertArchiveContainsFile($archiveFilename, $this->fileSystem
      ->realPath($secondTextFile->uri));
  }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
ArchiverTestBase::$fileSystem protected property The file system service.
ArchiverTestBase::assertArchiveContainsFile protected function Asserts an archive contains a given file.
ArchiverTestBase::assertArchiveNotContainsFile protected function Asserts an archive does not contain a given file.
ArchiverTestBase::setUp protected function
ZipTest::$archiverPluginId protected property The archiver plugin identifier. Overrides ArchiverTestBase::$archiverPluginId
ZipTest::testCreateArchive public function Tests that the Zip archive is created if it does not exist.
ZipTest::testOverwriteArchive public function Tests that the Zip archiver is created and overwritten.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.