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 bulk 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 stdClass;/*** coursecompleted enrolment plugin bulk 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*/final class bulk_test extends \advanced_testcase {/*** Setup to ensure that forms and locallib are loaded.*/public static function setUpBeforeClass(): void {global $CFG;require_once($CFG->libdir . '/formslib.php');require_once($CFG->dirroot . '/enrol/locallib.php');}/*** Tests initial setup.*/protected function setUp(): void {global $CFG;$CFG->enablecompletion = true;$this->resetAfterTest(true);$enabled = enrol_get_plugins(true);$enabled['coursecompleted'] = true;set_config('enrol_plugins_enabled', implode(',', array_keys($enabled)));}/*** Test bulk delete.* @covers \enrol_coursecompleted\bulkdelete* @covers \enrol_coursecompleted\form\bulkdelete*/public function test_bulk_delete(): void {global $DB;$generator = $this->getDataGenerator();$plugin = enrol_get_plugin('coursecompleted');$course1 = $generator->create_course(['shortname' => 'A1', 'enablecompletion' => 1]);$course2 = $generator->create_course(['shortname' => 'B1', 'enablecompletion' => 1]);$student = $generator->create_and_enrol($course2, 'student');$id = $plugin->add_instance($course1, ['customint1' => $course2->id, 'roleid' => 5, 'customint2' => 0]);$instance = $DB->get_record('enrol', ['id' => $id]);$plugin->enrol_user($instance, $student->id);$page = new \moodle_page();$manager = new \course_enrolment_manager($page, $course1);$operation = new bulkdelete($manager, $plugin);$this->assertEquals('deleteselectedusers', $operation->get_identifier());$this->assertEquals('Delete selected enrolments on course completion', $operation->get_title());$enr = new stdClass();$enr->status = true;$enr->enrolmentplugin = $plugin;$enr->enrolmentinstance = $instance;$user = new stdClass();$user->id = $student->id;$user->enrolments = [$enr];$properties = new stdClass();$properties->status = ENROL_USER_ACTIVE;$properties->timestart = 100;$properties->timeend = 1000;$this->assertfalse($operation->process($manager, [$user], new stdClass()));$this->setAdminUser();$this->assertTrue($operation->process($manager, [$user], $properties));$this->assertNotEmpty($operation->get_form(null, ['users' => [$user]]));}/*** Test bulk edit.* @covers \enrol_coursecompleted\bulkedit* @covers \enrol_coursecompleted\form\bulkedit*/public function test_bulk_edit(): void {global $DB;$generator = $this->getDataGenerator();$plugin = enrol_get_plugin('coursecompleted');$course1 = $generator->create_course(['shortname' => 'c1', 'enablecompletion' => 1]);$course2 = $generator->create_course(['shortname' => 'd1', 'enablecompletion' => 1]);$studentid = $generator->create_and_enrol($course2, 'student')->id;$id = $plugin->add_instance($course1, ['customint1' => $course2->id, 'roleid' => 5]);$instance = $DB->get_record('enrol', ['id' => $id]);$plugin->enrol_user($instance, $studentid);$page = new \moodle_page();$manager = new \course_enrolment_manager($page, $course1);$operation = new bulkedit($manager, $plugin);$this->assertEquals('editselectedusers', $operation->get_identifier());$this->assertEquals('Edit selected enrolments on course completion', $operation->get_title());$enr = new stdClass();$enr->status = true;$enr->enrolmentinstance = $instance;$enr->instance = $instance;$enr->id = $id;$user = new stdClass();$user->id = $studentid;$user->enrolments = [$enr];$properties = new stdClass();$properties->status = 1;$properties->timestart = time() - 100;$properties->timeend = time() + 1000;$this->assertfalse($operation->process($manager, [$user], $properties));$this->setAdminUser();$this->assertTrue($operation->process($manager, [$user], $properties));$properties->status = 99;$properties->timestart = null;$properties->timeend = null;$this->assertTrue($operation->process($manager, [$user], $properties));$this->assertNotEmpty($operation->get_form(null, ['users' => [$user]]));}}