forked from moodle/moodle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'MDL-70753-master' of https://github.com/sharidas/moodle
- Loading branch information
Showing
23 changed files
with
594 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
admin/tool/monitor/tests/behat/course_report_monitor.feature
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
@tool @tool_monitor | ||
Feature: In a course administration page, navigate through report page, test for course event monitor page | ||
In order to navigate through report page | ||
As an admin | ||
Go to course administration -> reports -> Event monitoring rules | ||
|
||
Background: | ||
Given the following "courses" exist: | ||
| fullname | shortname | category | groupmode | enablecompletion | | ||
| Course 1 | C1 | 0 | 1 | 1 | | ||
And the following "users" exist: | ||
| username | firstname | lastname | email | | ||
| student1 | Student | 1 | student1@example.com | | ||
And the following "course enrolments" exist: | ||
| user | course | role | | ||
| admin | C1 | editingteacher | | ||
| student1 | C1 | student | | ||
|
||
@javascript | ||
Scenario: Selector should be available in the course event monitoring page | ||
Given I log in as "admin" | ||
And I navigate to "Reports > Event monitoring rules" in site administration | ||
And I click on "Enable" "link" | ||
And I am on "Course 1" course homepage | ||
When I navigate to "Reports > Event monitoring rules" in current page administration | ||
Then "Report" "field" should exist | ||
And the "Report" select box should contain "Event monitoring rules" | ||
And the field "Report" matches value "Event monitoring rules" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
<?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/>. | ||
|
||
/** | ||
* Report plugins helper class | ||
* | ||
* @package core | ||
* @subpackage report | ||
* @copyright 2021 Sujith Haridasan | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace core; | ||
use moodle_url; | ||
use url_select; | ||
|
||
/** | ||
* A helper class with static methods to help report plugins | ||
* | ||
* @package core | ||
* @copyright 2021 Sujith Haridasan | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
class report_helper { | ||
/** | ||
* Print the selector dropdown | ||
* | ||
* @param string $pluginname The report plugin where the header is modified | ||
* @return void | ||
*/ | ||
public static function print_report_selector(string $pluginname):void { | ||
global $OUTPUT, $PAGE; | ||
|
||
if ($reportnode = $PAGE->settingsnav->find('coursereports', \navigation_node::TYPE_CONTAINER)) { | ||
if ($children = $reportnode->children) { | ||
// Menu to select report pages to navigate. | ||
$activeurl = ''; | ||
foreach ($children as $key => $node) { | ||
$name = $node->text; | ||
|
||
$url = $node->action()->out(false); | ||
$menu[$url] = $name; | ||
if ($name === $pluginname) { | ||
$activeurl = $url; | ||
} | ||
} | ||
} | ||
|
||
if (!empty($menu)) { | ||
$select = new url_select($menu, $activeurl, null, 'choosecoursereport'); | ||
$select->set_label(get_string('report'), ['class' => 'accesshide']); | ||
$select->attributes['style'] = "margin-bottom: 1.5rem"; | ||
$select->class .= " mb-4"; | ||
echo $OUTPUT->render($select); | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* Save the last selected report in the session | ||
* | ||
* @param int $id The course id | ||
* @param moodle_url $url The moodle url | ||
* @return void | ||
*/ | ||
public static function save_selected_report(int $id, moodle_url $url):void { | ||
global $USER; | ||
|
||
// Last selected report. | ||
if (!isset($USER->course_last_report)) { | ||
$USER->course_last_report = []; | ||
} | ||
$USER->course_last_report[$id] = $url; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
<?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/>. | ||
|
||
/** | ||
* Tests for report_helper. | ||
* | ||
* @package core | ||
* @category test | ||
* @copyright 2021 Sujith Haridasan | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace core; | ||
|
||
use moodle_url; | ||
use core\report_helper; | ||
|
||
/** | ||
* Tests the functions for report_helper class. | ||
*/ | ||
class report_helper_test extends \advanced_testcase { | ||
/** | ||
* Data provider for testing selected report for same and different courses | ||
* | ||
* @return array | ||
*/ | ||
public function data_selected_report():array { | ||
return [ | ||
['course_url_id' => [ | ||
['url' => '/test', 'id' => 1], | ||
['url' => '/foo', 'id' => 1]] | ||
], | ||
['course_url_id' => [ | ||
['url' => '/test', 'id' => 1], | ||
['url' => '/foo/bar', 'id' => 2]] | ||
] | ||
]; | ||
} | ||
|
||
/** | ||
* Testing selected report saved in $USER session. | ||
* | ||
* @dataProvider data_selected_report | ||
* @param array $courseurlid The array has both course url and course id | ||
*/ | ||
public function test_save_selected_report(array $courseurlid):void { | ||
global $USER; | ||
|
||
$url1 = new moodle_url($courseurlid[0]['url']); | ||
$courseid1 = $courseurlid[0]['id']; | ||
report_helper::save_selected_report($courseid1, $url1); | ||
|
||
$this->assertEquals($USER->course_last_report[$courseid1], $url1); | ||
|
||
$url2 = new moodle_url($courseurlid[1]['url']); | ||
$courseid2 = $courseurlid[1]['id']; | ||
report_helper::save_selected_report($courseid2, $url2); | ||
|
||
$this->assertEquals($USER->course_last_report[$courseid2], $url2); | ||
} | ||
|
||
/** | ||
* Testing the report selector dropdown shown. | ||
* | ||
* Verify that the dropdowns have the pages to be displayed. | ||
* | ||
* @return void | ||
*/ | ||
public function test_print_report_selector():void { | ||
global $PAGE; | ||
|
||
$this->resetAfterTest(); | ||
|
||
$user = $this->getDataGenerator()->create_user(); | ||
|
||
$PAGE->set_url('/'); | ||
|
||
$course = $this->getDataGenerator()->create_course(); | ||
$PAGE->set_course($course); | ||
|
||
$this->getDataGenerator()->enrol_user($user->id, $course->id, 'teacher'); | ||
|
||
$this->setUser($user); | ||
|
||
ob_start(); | ||
report_helper::print_report_selector('Logs'); | ||
$output = $this->getActualOutput(); | ||
ob_end_clean(); | ||
|
||
$log = '<option value="/report/log/index.php?id=' . $course->id .'" selected>Logs</option>'; | ||
$competency = '<option value="/report/competency/index.php?id=' . $course->id . '" >Competency breakdown</option>'; | ||
$loglive = '<option value="/report/loglive/index.php?id=' . $course->id . '" >Live logs</option>'; | ||
$participation = '<option value="/report/participation/index.php?id=' . $course->id . '" >Course participation</option>'; | ||
$this->assertStringContainsString($log, $output); | ||
$this->assertStringContainsString($competency, $output); | ||
$this->assertStringContainsString($loglive, $output); | ||
$this->assertStringContainsString($participation, $output); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
report/competency/tests/behat/course_report_competency.feature
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
@report @report_competency | ||
Feature: In a course administration page, navigate through report page, test for course competency page | ||
In order to navigate through report page | ||
As an admin | ||
Go to course administration -> reports -> competency breackdown | ||
|
||
Background: | ||
Given the following "courses" exist: | ||
| fullname | shortname | category | groupmode | | ||
| Course 1 | C1 | 0 | 1 | | ||
And the following "users" exist: | ||
| username | firstname | lastname | email | | ||
| student1 | Student | 1 | student1@example.com | | ||
And the following "course enrolments" exist: | ||
| user | course | role | | ||
| admin | C1 | editingteacher | | ||
| student1 | C1 | student | | ||
|
||
@javascript | ||
Scenario: Selector should be available in the course competency page | ||
Given I log in as "admin" | ||
And I am on "Course 1" course homepage | ||
When I navigate to "Reports > Competency breakdown" in current page administration | ||
Then "Report" "field" should exist | ||
And the "Report" select box should contain "Competency breakdown" | ||
And the field "Report" matches value "Competency breakdown" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
32 changes: 32 additions & 0 deletions
32
report/completion/tests/behat/course_report_completion.feature
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
@report @report_completion | ||
Feature: In a course administration page, navigate through report page, test for course completion page | ||
In order to navigate through report page | ||
As an admin | ||
Go to course administration -> reports -> course completion | ||
|
||
Background: | ||
Given the following "courses" exist: | ||
| fullname | shortname | category | groupmode | enablecompletion | | ||
| Course 1 | C1 | 0 | 1 | 1 | | ||
And the following "users" exist: | ||
| username | firstname | lastname | email | | ||
| student1 | Student | 1 | student1@example.com | | ||
And the following "course enrolments" exist: | ||
| user | course | role | | ||
| admin | C1 | editingteacher | | ||
| student1 | C1 | student | | ||
|
||
@javascript | ||
Scenario: Selector should be available in the course completion page | ||
Given I log in as "admin" | ||
And I am on "Course 1" course homepage with editing mode on | ||
And I navigate to "Course completion" in current page administration | ||
And I expand all fieldsets | ||
And I set the following fields to these values: | ||
| id_criteria_self | 1 | | ||
And I press "Save changes" | ||
And I am on "Course 1" course homepage | ||
When I navigate to "Reports > Course completion" in current page administration | ||
Then "Report" "field" should exist | ||
And the "Report" select box should contain "Course completion" | ||
And the field "Report" matches value "Course completion" |
Oops, something went wrong.