AutorÃa | Ultima modificación | Ver Log |
<?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/>./*** coursecompleted enrolment plugin tests.** @package enrol_coursecompleted* @copyright 2017 eWallah (www.eWallah.net)* @author Renaat Debleu <info@eWallah.net>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/namespace enrol_coursecompleted;use advanced_testcase;use stdClass;/*** coursecompleted enrolment plugin tests.** @package enrol_coursecompleted* @copyright 2017 eWallah (www.eWallah.net)* @author Renaat Debleu <info@eWallah.net>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later* @coversDefaultClass \enrol_coursecompleted_plugin*/final class backup_test extends advanced_testcase {/** @var stdClass Student. */private $student;/** @var stdClass First course. */private $course1;/** @var stdClass Second course. */private $course2;/*** Tests initial setup.*/protected function setUp(): void {global $CFG, $DB;$CFG->enablecompletion = true;$this->resetAfterTest(true);$enabled = enrol_get_plugins(true);$enabled['coursecompleted'] = true;set_config('enrol_plugins_enabled', implode(',', array_keys($enabled)));$generator = $this->getDataGenerator();$this->course1 = $generator->create_course(['shortname' => 'A1', 'enablecompletion' => 1]);$this->course2 = $generator->create_course(['shortname' => 'A2', 'enablecompletion' => 1]);$studentrole = $DB->get_field('role', 'id', ['shortname' => 'student']);$this->setAdminUser();$plugin = enrol_get_plugin('coursecompleted');$plugin->add_instance($this->course2,['customint1' => $this->course1->id, 'customint2' => 0, 'roleid' => $studentrole]);$this->student = $generator->create_and_enrol($this->course1, 'student');}/*** Test backup.* @covers \enrol_coursecompleted_plugin*/public function test_backup_restore(): void {global $CFG, $DB, $PAGE;require_once($CFG->dirroot . '/backup/util/includes/backup_includes.php');require_once($CFG->dirroot . '/backup/util/includes/restore_includes.php');require_once($CFG->dirroot . '/enrol/locallib.php');$ccompletion = new \completion_completion(['course' => $this->course1->id, 'userid' => $this->student->id]);$ccompletion->mark_complete(time());$this->runAdhocTasks();$bc = new \backup_controller(\backup::TYPE_1COURSE,$this->course2->id,\backup::FORMAT_MOODLE,\backup::INTERACTIVE_NO,\backup::MODE_GENERAL,2);$bc->execute_plan();$results = $bc->get_results();$file = $results['backup_destination'];$fp = get_file_packer('application/vnd.moodle.backup');$filepath = $CFG->dataroot . '/temp/backup/test-restore-course-event';$file->extract_to_pathname($fp, $filepath);$bc->destroy();$rc = new \restore_controller('test-restore-course-event',$this->course2->id,\backup::INTERACTIVE_NO,\backup::MODE_GENERAL,2,\backup::TARGET_NEW_COURSE);$rc->execute_precheck();$rc->execute_plan();$newid = $rc->get_courseid();$rc->destroy();$this->assertEquals(2, $DB->count_records('enrol', ['enrol' => 'coursecompleted']));$this->assertTrue(is_enrolled(\context_course::instance($newid), $this->student->id));$url = new \moodle_url('/user/index.php', ['id' => $newid]);$PAGE->set_url($url);$course = get_course($newid);$manager = new \course_enrolment_manager($PAGE, $course);$enrolments = $manager->get_user_enrolments($this->student->id);$this->assertCount(2, $enrolments);$bc = new \backup_controller(\backup::TYPE_1COURSE,$this->course2->id,\backup::FORMAT_MOODLE,\backup::INTERACTIVE_NO,\backup::MODE_GENERAL,2);$bc->execute_plan();$results = $bc->get_results();$file = $results['backup_destination'];$fp = get_file_packer('application/vnd.moodle.backup');$filepath = $CFG->dataroot . '/temp/backup/test-restore-course-event';$file->extract_to_pathname($fp, $filepath);$bc->destroy();$rc = new \restore_controller('test-restore-course-event',$newid,\backup::INTERACTIVE_NO,\backup::MODE_GENERAL,2,\backup::TARGET_EXISTING_ADDING);$rc->execute_precheck();$rc->execute_plan();$rc->destroy();$this->assertEquals(2, $DB->count_records('enrol', ['enrol' => 'coursecompleted']));$this->assertTrue(is_enrolled(\context_course::instance($newid), $this->student->id));}}