Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

< /** < * Unit tests for core\content\zipwriter. < * < * @package core < * @category test < * @copyright 2020 Simey Lameze <simey@moodle.com> < * @license http://www.gnu.org/copyleft/gpl.html GNU Public License < */ <
declare(strict_types=1); namespace core\content\export; use advanced_testcase; use context_module; use context_system; use ZipArchive; /** * Unit tests for core\content\zipwriter. *
< * @coversDefaultClass \core\content\export\zipwriter
> * @package core > * @category test > * @copyright 2020 Simey Lameze <simey@moodle.com> > * @license http://www.gnu.org/copyleft/gpl.html GNU Public License > * @covers \core\content\export\zipwriter
*/ class zipwriter_test extends advanced_testcase { /** * Test add_file_from_stored_file(). */ public function test_add_file_from_stored_file(): void { $this->resetAfterTest(true); $this->setAdminUser(); $course = $this->getDataGenerator()->create_course(); $folder = $this->getDataGenerator()->create_module('folder', ['course' => $course->id]); $context = \context_course::instance($course->id); // Add a file to the intro. $fileintroname = "fileintro.txt"; $filerecord = [ 'contextid' => context_module::instance($folder->cmid)->id, 'component' => 'mod_folder', 'filearea' => 'intro', 'itemid' => 0, 'filepath' => '/', 'filename' => $fileintroname, ]; $fs = get_file_storage(); $storedfile = $fs->create_file_from_string($filerecord, 'image contents'); $pathinfolder = $storedfile->get_filepath() . $storedfile->get_filename(); $zipwriter = zipwriter::get_file_writer('test.zip'); $zipwriter->add_file_from_stored_file($context, $pathinfolder, $storedfile); $zipwriter->finish(); $zipfilepath = $zipwriter->get_file_path(); $zip = new ZipArchive(); $opened = $zip->open($zipfilepath); $this->assertTrue($opened); $pathinzip = $zipwriter->get_context_path($context, $pathinfolder); $this->assertEquals($storedfile->get_content(), $zip->getFromName($pathinzip)); } /** * Test add_file_from_string(). */ public function test_add_file_from_string(): void { $context = context_system::instance(); $pathinfolder = "/path/to/my/file.txt"; $mycontent = "Zippidy do dah"; $zipwriter = zipwriter::get_file_writer('test.zip'); $zipwriter->add_file_from_string($context, $pathinfolder, $mycontent); $zipwriter->finish(); $zipfilepath = $zipwriter->get_file_path(); $zip = new ZipArchive(); $opened = $zip->open($zipfilepath); $this->assertTrue($opened); $pathinzip = ltrim($zipwriter->get_context_path($context, $pathinfolder), '/'); $this->assertEquals($mycontent, $zip->getFromName($pathinzip)); } /** * Test get_file_writer(). */ public function test_get_file_writer(): void { $zipwriter = zipwriter::get_file_writer('test.zip'); $this->assertInstanceOf(zipwriter::class, $zipwriter); $this->assertTrue(file_exists($zipwriter->get_file_path())); } /** * Test get_stream_writer(). */ public function test_get_stream_writer(): void { $zipwriter = zipwriter::get_stream_writer('test.zip'); $this->assertInstanceOf(zipwriter::class, $zipwriter); } }