MDL-68991 core: Prevent popup blockers blocking feedback window
[moodle.git] / lib / tests / external / userfeedback / generate_url_test.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * External functions test for generate_url.
19  *
20  * @package    core
21  * @category   test
22  * @copyright  2020 Shamim Rezaie <shamim@moodle.com>
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 namespace core\external\userfeedback;
28 defined('MOODLE_INTERNAL') || die();
30 use externallib_advanced_testcase;
31 use context_system;
32 use context_course;
33 use external_api;
35 global $CFG;
37 require_once($CFG->dirroot . '/webservice/tests/helpers.php');
39 /**
40  * Class generate_url_testcase
41  *
42  * @copyright  2020 Shamim Rezaie <shamim@moodle.com>
43  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
44  * @coversDefaultClass generate_url
45  */
46 class generate_url_testcase extends externallib_advanced_testcase {
48     /**
49      * Test the behaviour of generate_url().
50      *
51      * @covers ::execute
52      */
53     public function test_record_action_system() {
54         $this->resetAfterTest();
56         $course = $this->getDataGenerator()->create_course();
57         $user = $this->getDataGenerator()->create_and_enrol($course, 'student');
58         $context = context_system::instance();
60         $this->setUser($user);
62         // Call the WS and check the requested data is returned as expected.
63         $result = generate_url::execute($context->id);
64         $result = external_api::clean_returnvalue(generate_url::execute_returns(), $result);
66         $this->assertStringStartsWith('https://feedback.moodle.org/lms', $result);
67         $this->assertStringContainsString('?lang=en', $result);
68         $this->assertStringContainsString('&moodle_url=https%3A%2F%2Fwww.example.com%2Fmoodle', $result);
69         $this->assertStringContainsString('&theme=boost', $result);
70     }
72     /**
73      * Test the behaviour of generate_url() in a course with a course theme.
74      *
75      * @covers ::execute
76      */
77     public function test_record_action_course_theme() {
78         $this->resetAfterTest();
80         // Enable course themes.
81         set_config('allowcoursethemes', 1);
83         $course = $this->getDataGenerator()->create_course(['theme' => 'classic']);
84         $user = $this->getDataGenerator()->create_and_enrol($course, 'student');
85         $context = context_course::instance($course->id);
87         $this->setUser($user);
89         // Call the WS and check the requested data is returned as expected.
90         $result = generate_url::execute($context->id);
91         $result = external_api::clean_returnvalue(generate_url::execute_returns(), $result);
93         $this->assertStringContainsString('&theme=classic', $result);
94     }
96     /**
97      * Test the behaviour of generate_url() when a custom feedback url is set.
98      *
99      * @covers ::execute
100      */
101     public function test_record_action_custom_feedback_url() {
102         $this->resetAfterTest();
104         // Enable course themes.
105         set_config('userfeedback_url', 'https://feedback.moodle.org/abc');
107         $user = $this->getDataGenerator()->create_user();
108         $context = context_system::instance();
110         $this->setUser($user);
112         // Call the WS and check the requested data is returned as expected.
113         $result = generate_url::execute($context->id);
114         $result = external_api::clean_returnvalue(generate_url::execute_returns(), $result);
116         $this->assertStringStartsWith('https://feedback.moodle.org/abc', $result);
117     }