Rev 1 | Ir a la última revisión | Autoría | Comparar con el anterior | 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/>.namespace mod_lti\external;use core_external\external_api;defined('MOODLE_INTERNAL') || die();global $CFG;require_once($CFG->dirroot . '/mod/lti/tests/mod_lti_testcase.php');/*** PHPUnit tests for toggle_showinactivitychooser external function.** @package mod_lti* @copyright 2023 Ilya Tregubov <ilya.a.tregubov@gmail.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later* @coversDefaultClass \mod_lti\external\toggle_showinactivitychooser*/class toggle_showinactivitychooser_test extends \mod_lti_testcase {/*** Test toggle_showinactivitychooser for course tool.* @covers ::execute*/public function test_toggle_showinactivitychooser_course_tool(): void {global $DB;$this->resetAfterTest();$course = $this->getDataGenerator()->create_course();$editingteacher = $this->getDataGenerator()->create_and_enrol($course, 'editingteacher');$this->setUser($editingteacher);$typeid = lti_add_type((object) ['state' => LTI_TOOL_STATE_CONFIGURED,'course' => $course->id,'coursevisible' => LTI_COURSEVISIBLE_ACTIVITYCHOOSER],(object) ['lti_typename' => "My course tool",'lti_toolurl' => 'http://example.com','lti_ltiversion' => 'LTI-1p0','lti_coursevisible' => LTI_COURSEVISIBLE_ACTIVITYCHOOSER]);$result = toggle_showinactivitychooser::execute($typeid, $course->id, false);$result = external_api::clean_returnvalue(toggle_showinactivitychooser::execute_returns(), $result);$this->assertTrue($result);$sql = "SELECT lt.coursevisible coursevisibleFROM {lti_types} ltWHERE lt.id = ?";$actual = $DB->get_record_sql($sql, [$typeid]);$this->assertEquals(LTI_COURSEVISIBLE_PRECONFIGURED, $actual->coursevisible);$result = toggle_showinactivitychooser::execute($typeid, $course->id, true);$result = external_api::clean_returnvalue(toggle_showinactivitychooser::execute_returns(), $result);$this->assertTrue($result);$actual = $DB->get_record_sql($sql, [$typeid]);$this->assertEquals(LTI_COURSEVISIBLE_ACTIVITYCHOOSER, $actual->coursevisible);}/*** Test toggle_showinactivitychooser for site tool.* @covers ::execute*/public function test_toggle_showinactivitychooser_site_tool(): void {global $DB;$this->resetAfterTest();$coursecat1 = $this->getDataGenerator()->create_category();$coursecat2 = $this->getDataGenerator()->create_category();$course = $this->getDataGenerator()->create_course(['category' => $coursecat1->id]);$editingteacher = $this->getDataGenerator()->create_and_enrol($course, 'editingteacher');$this->setUser($editingteacher);$type = $this->generate_tool_type(123); // Creates a site tool.$result = toggle_showinactivitychooser::execute($type->id, $course->id, false);$result = external_api::clean_returnvalue(toggle_showinactivitychooser::execute_returns(), $result);$this->assertTrue($result);$sql = "SELECT lt.coursevisible coursevisible1, lc.coursevisible AS coursevisible2FROM {lti_types} ltLEFT JOIN {lti_coursevisible} lc ON lt.id = lc.typeidWHERE lt.id = ?AND lc.courseid = ?";$actual = $DB->get_record_sql($sql, [$type->id, $course->id]);$this->assertEquals(LTI_COURSEVISIBLE_ACTIVITYCHOOSER, $actual->coursevisible1);$this->assertEquals(LTI_COURSEVISIBLE_PRECONFIGURED, $actual->coursevisible2);$result = toggle_showinactivitychooser::execute($type->id, $course->id, true);$result = external_api::clean_returnvalue(toggle_showinactivitychooser::execute_returns(), $result);$this->assertTrue($result);$actual = $DB->get_record_sql($sql, [$type->id, $course->id]);$this->assertEquals(LTI_COURSEVISIBLE_ACTIVITYCHOOSER, $actual->coursevisible1);$this->assertEquals(LTI_COURSEVISIBLE_ACTIVITYCHOOSER, $actual->coursevisible2);$ltigenerator = $this->getDataGenerator()->get_plugin_generator('mod_lti');$ltigenerator->create_tool_types(['name' => 'site tool preconfigured and activity chooser, restricted to category 1','baseurl' => 'http://example.com/tool/1','coursevisible' => LTI_COURSEVISIBLE_ACTIVITYCHOOSER,'state' => LTI_TOOL_STATE_CONFIGURED,'lti_coursecategories' => $coursecat1->id]);$tool = $DB->get_record('lti_types', ['name' => 'site tool preconfigured and activity chooser, restricted to category 1']);$result = toggle_showinactivitychooser::execute($tool->id, $course->id, false);$result = external_api::clean_returnvalue(toggle_showinactivitychooser::execute_returns(), $result);$this->assertTrue($result);$actual = $DB->get_record_sql($sql, [$tool->id, $course->id]);$this->assertEquals(LTI_COURSEVISIBLE_ACTIVITYCHOOSER, $actual->coursevisible1);$this->assertEquals(LTI_COURSEVISIBLE_PRECONFIGURED, $actual->coursevisible2);$ltigenerator = $this->getDataGenerator()->get_plugin_generator('mod_lti');$ltigenerator->create_tool_types(['name' => 'site tool preconfigured and activity chooser, restricted to category 2','baseurl' => 'http://example.com/tool/1','coursevisible' => LTI_COURSEVISIBLE_ACTIVITYCHOOSER,'state' => LTI_TOOL_STATE_CONFIGURED,'lti_coursecategories' => $coursecat2->id]);$tool = $DB->get_record('lti_types', ['name' => 'site tool preconfigured and activity chooser, restricted to category 2']);$this->expectException('moodle_exception');$this->expectExceptionMessage('You are not allowed to change this setting for this tool.');toggle_showinactivitychooser::execute($tool->id, $course->id, true);$ltigenerator = $this->getDataGenerator()->get_plugin_generator('mod_lti');$ltigenerator->create_tool_types(['name' => 'site tool dont show','baseurl' => 'http://example.com/tool/1','coursevisible' => LTI_COURSEVISIBLE_NO,'state' => LTI_TOOL_STATE_CONFIGURED,]);$tool = $DB->get_record('lti_types', ['name' => 'site tool dont show']);$result = toggle_showinactivitychooser::execute($tool->id, $course->id, false);$result = external_api::clean_returnvalue(toggle_showinactivitychooser::execute_returns(), $result);$this->assertFalse($result);}}