Merge branch 'MDL-49566_m29' of git://github.com/markn86/moodle into MOODLE_29_STABLE

This commit is contained in:
Andrew Nicols
2016-01-04 13:57:51 +08:00
12 changed files with 1003 additions and 1 deletions
+66
View File
@@ -28,6 +28,7 @@ defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->libdir . '/badgeslib.php');
require_once($CFG->dirroot . '/badges/lib.php');
class core_badges_badgeslib_testcase extends advanced_testcase {
protected $badgeid;
@@ -472,4 +473,69 @@ class core_badges_badgeslib_testcase extends advanced_testcase {
$this->assertStringMatchesFormat($testassertion->class, json_encode($assertion->get_badge_class()));
$this->assertStringMatchesFormat($testassertion->issuer, json_encode($assertion->get_issuer()));
}
/**
* Tests the core_badges_myprofile_navigation() function.
*/
public function test_core_badges_myprofile_navigation() {
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$this->setAdminUser();
$badge = new badge($this->badgeid);
$badge->issue($this->user->id, true);
$iscurrentuser = true;
$course = null;
// Enable badges.
set_config('enablebadges', true);
// Check the node tree is correct.
core_badges_myprofile_navigation($tree, $this->user, $iscurrentuser, $course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('localbadges', $nodes->getValue($tree));
}
/**
* Tests the core_badges_myprofile_navigation() function with badges disabled..
*/
public function test_core_badges_myprofile_navigation_badges_disabled() {
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$this->setAdminUser();
$badge = new badge($this->badgeid);
$badge->issue($this->user->id, true);
$iscurrentuser = false;
$course = null;
// Disable badges.
set_config('enablebadges', false);
// Check the node tree is correct.
core_badges_myprofile_navigation($tree, $this->user, $iscurrentuser, $course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('localbadges', $nodes->getValue($tree));
}
/**
* Tests the core_badges_myprofile_navigation() function with a course badge.
*/
public function test_core_badges_myprofile_navigation_with_course_badge() {
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$this->setAdminUser();
$badge = new badge($this->coursebadge);
$badge->issue($this->user->id, true);
$iscurrentuser = false;
// Check the node tree is correct.
core_badges_myprofile_navigation($tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('localbadges', $nodes->getValue($tree));
}
}
@@ -30,7 +30,7 @@ require_once($CFG->dirroot . '/blog/lib.php');
/**
* Test functions that rely on the DB tables
*/
class core_bloglib_testcase extends advanced_testcase {
class core_blog_lib_testcase extends advanced_testcase {
private $courseid;
private $cmid;
@@ -472,5 +472,73 @@ class core_bloglib_testcase extends advanced_testcase {
$this->assertEquals($url, $event->get_url());
$this->assertEventContextNotUsed($event);
}
/**
* Tests the core_blog_myprofile_navigation() function.
*/
public function test_core_blog_myprofile_navigation() {
global $USER;
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$this->setAdminUser();
$iscurrentuser = true;
$course = null;
// Enable blogs.
set_config('enableblogs', true);
// Check the node tree is correct.
core_blog_myprofile_navigation($tree, $USER, $iscurrentuser, $course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('blogs', $nodes->getValue($tree));
}
/**
* Tests the core_blog_myprofile_navigation() function as a guest.
*/
public function test_core_blog_myprofile_navigation_as_guest() {
global $USER;
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$iscurrentuser = false;
$course = null;
// Set user as guest.
$this->setGuestUser();
// Check the node tree is correct.
core_blog_myprofile_navigation($tree, $USER, $iscurrentuser, $course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('blogs', $nodes->getValue($tree));
}
/**
* Tests the core_blog_myprofile_navigation() function when blogs are disabled.
*/
public function test_core_blog_myprofile_navigation_blogs_disabled() {
global $USER;
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$this->setAdminUser();
$iscurrentuser = false;
$course = null;
// Disable blogs.
set_config('enableblogs', false);
// Check the node tree is correct.
core_blog_myprofile_navigation($tree, $USER, $iscurrentuser, $course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('blogs', $nodes->getValue($tree));
}
}
+89
View File
@@ -0,0 +1,89 @@
<?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 gradereport_user library functions.
*
* @package gradereport_user
* @copyright 2015 onwards Ankit agarwal <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/grade/report/user/lib.php');
/**
* Class gradereport_user_lib_testcase.
*
* @package gradereport_user
* @copyright 2015 onwards Ankit agarwal <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
class gradereport_user_lib_testcase extends advanced_testcase {
/**
* @var stdClass The user.
*/
private $user;
/**
* @var stdClass The course.
*/
private $course;
/**
* @var \core_user\output\myprofile\tree The navigation tree.
*/
private $tree;
public function setUp() {
$this->user = $this->getDataGenerator()->create_user();
$this->course = $this->getDataGenerator()->create_course();
$this->tree = new \core_user\output\myprofile\tree();
$this->resetAfterTest();
}
/**
* Tests the gradereport_user_myprofile_navigation() function.
*/
public function test_gradereport_user_myprofile_navigation() {
$this->setAdminUser();
$iscurrentuser = false;
gradereport_user_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('grade', $nodes->getValue($this->tree));
}
/**
* Tests the gradereport_user_myprofile_navigation() function for a user
* without permission to view the grade node.
*/
public function test_gradereport_user_myprofile_navigation_without_permission() {
$this->setUser($this->user);
$iscurrentuser = true;
gradereport_user_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('grade', $nodes->getValue($this->tree));
}
}
+1
View File
@@ -23,6 +23,7 @@
*/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot . '/tag/lib.php');
/**
* Defines core nodes for my profile navigation tree.
+275
View File
@@ -0,0 +1,275 @@
<?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 myprofilelib apis.
*
* @package core
* @copyright 2015 onwards Ankit agarwal <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/lib/myprofilelib.php');
/**
* Tests for myprofilelib apis.
*
* @package core
* @copyright 2015 onwards Ankit agarwal <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
class core_myprofilelib_testcase extends advanced_testcase {
/**
* @var stdClass The user.
*/
private $user;
/**
* @var stdClass The course.
*/
private $course;
/**
* @var \core_user\output\myprofile\tree The navigation tree.
*/
private $tree;
public function setUp() {
// Set the $PAGE->url value so core_myprofile_navigation() doesn't complain.
global $PAGE;
$PAGE->set_url('/test');
$this->user = $this->getDataGenerator()->create_user();
$this->user2 = $this->getDataGenerator()->create_user();
$this->course = $this->getDataGenerator()->create_course();
$this->tree = new \core_user\output\myprofile\tree();
$this->resetAfterTest();
}
/**
* Tests the core_myprofile_navigation() function as an admin viewing a user's course profile.
*/
public function test_core_myprofile_navigation_as_admin() {
$this->setAdminUser();
$iscurrentuser = false;
// Test tree as admin user.
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$categories = $reflector->getProperty('categories');
$categories->setAccessible(true);
$cats = $categories->getValue($this->tree);
$this->assertArrayHasKey('contact', $cats);
$this->assertArrayHasKey('coursedetails', $cats);
$this->assertArrayHasKey('miscellaneous', $cats);
$this->assertArrayHasKey('reports', $cats);
$this->assertArrayHasKey('administration', $cats);
$this->assertArrayHasKey('loginactivity', $cats);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('fullprofile', $nodes->getValue($this->tree));
}
/**
* Tests the core_myprofile_navigation() function as a user without permission to view the full
* profile of another another user.
*/
public function test_core_myprofile_navigation_course_without_permission() {
$this->setUser($this->user2);
$iscurrentuser = false;
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('fullprofile', $nodes->getValue($this->tree));
}
/**
* Tests the core_myprofile_navigation() function as the currently logged in user.
*/
public function test_core_myprofile_navigation_profile_link_as_current_user() {
$this->setUser($this->user);
$iscurrentuser = true;
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('editprofile', $nodes->getValue($this->tree));
}
/**
* Tests the core_myprofile_navigation() function as the admin viewing another user.
*/
public function test_core_myprofile_navigation_profile_link_as_admin() {
$this->setAdminUser();
$iscurrentuser = false;
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('editprofile', $nodes->getValue($this->tree));
}
/**
* Tests the core_myprofile_navigation() function when viewing the preference page as an admin.
*/
public function test_core_myprofile_navigation_preference_as_admin() {
$this->setAdminUser();
$iscurrentuser = false;
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('preferences', $nodes->getValue($this->tree));
$this->assertArrayHasKey('loginas', $nodes->getValue($this->tree));
}
/**
* Tests the core_myprofile_navigation() function when viewing the preference
* page as another user without the ability to use the 'loginas' functionality.
*/
public function test_core_myprofile_navigation_preference_without_permission() {
// Login as link for a user who doesn't have the capability to login as.
$this->setUser($this->user2);
$iscurrentuser = false;
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('loginas', $nodes->getValue($this->tree));
}
/**
* Tests the core_myprofile_navigation() function as an admin viewing another user's contact details.
*/
public function test_core_myprofile_navigation_contact_fields_as_admin() {
global $CFG;
// User contact fields.
set_config("hiddenuserfields", "country,city,webpage,icqnumber,skypeid,yahooid,aimid,msnid");
set_config("showuseridentity", "email,address,phone1,phone2,institution,department,idnumber");
$hiddenfields = explode(',', $CFG->hiddenuserfields);
$identityfields = explode(',', $CFG->showuseridentity);
$this->setAdminUser();
$iscurrentuser = false;
// Make sure fields are not empty.
$fields = array(
'country' => 'AU',
'city' => 'Silent hill',
'url' => 'Ghosts',
'icq' => 'Wth is ICQ?',
'skype' => 'derp',
'yahoo' => 'are you living in the 90\'s?',
'aim' => 'are you for real?',
'msn' => '...',
'email' => '[email protected]',
'address' => 'Didn\'t I mention silent hill already ?',
'phone1' => '123',
'phone2' => '234',
'institution' => 'strange land',
'department' => 'video game/movie',
'idnumber' => 'SLHL'
);
foreach ($fields as $field => $value) {
$this->user->$field = $value;
}
// User with proper permissions.
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, null);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
foreach ($hiddenfields as $field) {
$this->assertArrayHasKey($field, $nodes->getValue($this->tree));
}
foreach ($identityfields as $field) {
$this->assertArrayHasKey($field, $nodes->getValue($this->tree));
}
}
/**
* Tests the core_myprofile_navigation() function as a user viewing another user's profile
* ensuring that the contact details are not shown.
*/
public function test_core_myprofile_navigation_contact_field_without_permission() {
global $CFG;
$iscurrentuser = false;
$hiddenfields = explode(',', $CFG->hiddenuserfields);
$identityfields = explode(',', $CFG->showuseridentity);
// User without permission.
$this->setUser($this->user2);
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, null);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
foreach ($hiddenfields as $field) {
$this->assertArrayNotHasKey($field, $nodes->getValue($this->tree));
}
foreach ($identityfields as $field) {
$this->assertArrayNotHasKey($field, $nodes->getValue($this->tree));
}
}
/**
* Tests the core_myprofile_navigation() function as an admin viewing another user's
* profile ensuring the login activity links are shown.
*/
public function test_core_myprofile_navigation_login_activity() {
// First access, last access, last ip.
$this->setAdminUser();
$iscurrentuser = false;
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, null);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('firstaccess', $nodes->getValue($this->tree));
$this->assertArrayHasKey('lastaccess', $nodes->getValue($this->tree));
$this->assertArrayHasKey('lastip', $nodes->getValue($this->tree));
}
/**
* Tests the core_myprofile_navigation() function as a user viewing another user's profile
* ensuring the login activity links are not shown.
*/
public function test_core_myprofile_navigationn_login_activity_without_permission() {
// User without permission.
set_config("hiddenuserfields", "firstaccess,lastaccess,lastip");
$this->setUser($this->user2);
$iscurrentuser = false;
core_myprofile_navigation($this->tree, $this->user, $iscurrentuser, null);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('firstaccess', $nodes->getValue($this->tree));
$this->assertArrayNotHasKey('lastaccess', $nodes->getValue($this->tree));
$this->assertArrayNotHasKey('lastip', $nodes->getValue($this->tree));
}
}
+73
View File
@@ -1501,4 +1501,77 @@ class mod_forum_lib_testcase extends advanced_testcase {
}
/**
* Tests the mod_forum_myprofile_navigation() function.
*/
public function test_mod_forum_myprofile_navigation() {
$this->resetAfterTest(true);
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$user = $this->getDataGenerator()->create_user();
$course = $this->getDataGenerator()->create_course();
$iscurrentuser = true;
// Set as the current user.
$this->setUser($user);
// Check the node tree is correct.
mod_forum_myprofile_navigation($tree, $user, $iscurrentuser, $course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('forumposts', $nodes->getValue($tree));
$this->assertArrayHasKey('forumdiscussions', $nodes->getValue($tree));
}
/**
* Tests the mod_forum_myprofile_navigation() function as a guest.
*/
public function test_mod_forum_myprofile_navigation_as_guest() {
global $USER;
$this->resetAfterTest(true);
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$course = $this->getDataGenerator()->create_course();
$iscurrentuser = true;
// Set user as guest.
$this->setGuestUser();
// Check the node tree is correct.
mod_forum_myprofile_navigation($tree, $USER, $iscurrentuser, $course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('forumposts', $nodes->getValue($tree));
$this->assertArrayNotHasKey('forumdiscussions', $nodes->getValue($tree));
}
/**
* Tests the mod_forum_myprofile_navigation() function as a user viewing another user's profile.
*/
public function test_mod_forum_myprofile_navigation_different_user() {
$this->resetAfterTest(true);
// Set up the test.
$tree = new \core_user\output\myprofile\tree();
$user = $this->getDataGenerator()->create_user();
$user2 = $this->getDataGenerator()->create_user();
$course = $this->getDataGenerator()->create_course();
$iscurrentuser = true;
// Set to different user's profile.
$this->setUser($user2);
// Check the node tree is correct.
mod_forum_myprofile_navigation($tree, $user, $iscurrentuser, $course);
$reflector = new ReflectionObject($tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('forumposts', $nodes->getValue($tree));
$this->assertArrayHasKey('forumdiscussions', $nodes->getValue($tree));
}
}
+5
View File
@@ -386,6 +386,11 @@ function core_notes_myprofile_navigation(core_user\output\myprofile\tree $tree,
return false;
}
if (isguestuser($user)) {
// No notes for guest users.
return false;
}
$url = new moodle_url("/notes/index.php", array('user' => $user->id));
$title = get_string('notes', 'core_notes');
if (empty($course)) {
+117
View File
@@ -0,0 +1,117 @@
<?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 notes library functions.
*
* @package core_notes
* @copyright 2015 onwards Ankit agarwal <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/notes/lib.php');
/**
* Class core_notes_lib_testcase
*
* @package core_notes
* @copyright 2015 onwards Ankit agarwal <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
class core_notes_lib_testcase extends advanced_testcase {
/**
* @var stdClass The user.
*/
private $user;
/**
* @var stdClass The course.
*/
private $course;
/**
* @var \core_user\output\myprofile\tree The navigation tree.
*/
private $tree;
public function setUp() {
$this->user = $this->getDataGenerator()->create_user();
$this->course = $this->getDataGenerator()->create_course();
$this->tree = new \core_user\output\myprofile\tree();
$this->resetAfterTest();
}
/**
* Tests the core_notes_myprofile_navigation() function.
*/
public function test_core_notes_myprofile_navigation() {
global $USER;
// Set up the test.
$this->setAdminUser();
$iscurrentuser = true;
// Enable notes.
set_config('enablenotes', true);
// Check the node tree is correct.
core_notes_myprofile_navigation($this->tree, $USER, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('notes', $nodes->getValue($this->tree));
}
/**
* Tests the core_notes_myprofile_navigation() function.
*/
public function test_core_notes_myprofile_navigation_as_guest() {
global $USER;
$this->setGuestUser();
$iscurrentuser = false;
// Check the node tree is correct.
core_notes_myprofile_navigation($this->tree, $USER, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('notes', $nodes->getValue($this->tree));
}
/**
* Tests the core_notes_myprofile_navigation() function.
*/
public function test_core_notes_myprofile_navigation_notes_disabled() {
global $USER;
$this->setAdminUser();
$iscurrentuser = false;
// Disable notes.
set_config('enablenotes', false);
// Check the node tree is correct.
core_notes_myprofile_navigation($this->tree, $USER, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('notes', $nodes->getValue($this->tree));
}
}
+58
View File
@@ -24,6 +24,8 @@
defined('MOODLE_INTERNAL') || die();
global $CFG;
/**
* Class report_log_events_testcase.
*
@@ -33,6 +35,28 @@ defined('MOODLE_INTERNAL') || die();
*/
class report_log_lib_testcase extends advanced_testcase {
/**
* @var stdClass The user.
*/
private $user;
/**
* @var stdClass The course.
*/
private $course;
/**
* @var \core_user\output\myprofile\tree The navigation tree.
*/
private $tree;
public function setUp() {
$this->user = $this->getDataGenerator()->create_user();
$this->course = $this->getDataGenerator()->create_course();
$this->tree = new \core_user\output\myprofile\tree();
$this->resetAfterTest();
}
/**
* Test report_log_supports_logstore.
*/
@@ -54,4 +78,38 @@ class report_log_lib_testcase extends advanced_testcase {
$this->assertContains($expectedstore, $stores);
}
}
/**
* Tests the report_log_myprofile_navigation() function as an admin viewing the logs for a user.
*/
public function test_report_log_myprofile_navigation() {
// Set as the admin.
$this->setAdminUser();
$iscurrentuser = false;
// Check the node tree is correct.
report_log_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('alllogs', $nodes->getValue($this->tree));
$this->assertArrayHasKey('todayslogs', $nodes->getValue($this->tree));
}
/**
* Tests the report_log_myprofile_navigation() function as a user without permission.
*/
public function test_report_log_myprofile_navigation_without_permission() {
// Set to the other user.
$this->setUser($this->user);
$iscurrentuser = true;
// Check the node tree is correct.
report_log_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('alllogs', $nodes->getValue($this->tree));
$this->assertArrayNotHasKey('todayslogs', $nodes->getValue($this->tree));
}
}
+55
View File
@@ -24,6 +24,8 @@
defined('MOODLE_INTERNAL') || die();
global $CFG;
/**
* Class report_outline_lib_testcase
*
@@ -33,6 +35,29 @@ defined('MOODLE_INTERNAL') || die();
*/
class report_outline_lib_testcase extends advanced_testcase {
/**
* @var stdClass The user.
*/
private $user;
/**
* @var stdClass The course.
*/
private $course;
/**
* @var \core_user\output\myprofile\tree The navigation tree.
*/
private $tree;
public function setUp() {
$this->user = $this->getDataGenerator()->create_user();
$this->user2 = $this->getDataGenerator()->create_user();
$this->course = $this->getDataGenerator()->create_course();
$this->tree = new \core_user\output\myprofile\tree();
$this->resetAfterTest();
}
/**
* Test report_log_supports_logstore.
*/
@@ -53,4 +78,34 @@ class report_outline_lib_testcase extends advanced_testcase {
$this->assertContains($expectedstore, $stores);
}
}
/**
* Tests the report_outline_myprofile_navigation() function as an admin user.
*/
public function test_report_outline_myprofile_navigation() {
$this->setAdminUser();
$iscurrentuser = false;
report_outline_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('outline', $nodes->getValue($this->tree));
$this->assertArrayHasKey('complete', $nodes->getValue($this->tree));
}
/**
* Tests the report_outline_myprofile_navigation() function as a user without permission.
*/
public function test_report_outline_myprofile_navigation_without_permission() {
$this->setUser($this->user);
$iscurrentuser = true;
report_outline_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('outline', $nodes->getValue($this->tree));
$this->assertArrayNotHasKey('complete', $nodes->getValue($this->tree));
}
}
+74
View File
@@ -33,6 +33,28 @@ defined('MOODLE_INTERNAL') || die();
*/
class report_stats_lib_testcase extends advanced_testcase {
/**
* @var stdClass The user.
*/
private $user;
/**
* @var stdClass The course.
*/
private $course;
/**
* @var \core_user\output\myprofile\tree The navigation tree.
*/
private $tree;
public function setUp() {
$this->user = $this->getDataGenerator()->create_user();
$this->course = $this->getDataGenerator()->create_course();
$this->tree = new \core_user\output\myprofile\tree();
$this->resetAfterTest();
}
/**
* Test report_log_supports_logstore.
*/
@@ -53,4 +75,56 @@ class report_stats_lib_testcase extends advanced_testcase {
$this->assertContains($expectedstore, $stores);
}
}
/**
* Tests the report_stats_myprofile_navigation() function.
*/
public function test_report_stats_myprofile_navigation() {
$this->setAdminUser();
$iscurrentuser = false;
// Enable stats.
set_config('enablestats', true);
report_stats_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('stats', $nodes->getValue($this->tree));
}
/**
* Tests the report_stats_myprofile_navigation() function when stats are disabled.
*/
public function test_report_stats_myprofile_navigation_stats_disabled() {
$this->setAdminUser();
$iscurrentuser = false;
// Disable stats.
set_config('enablestats', false);
report_stats_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('stats', $nodes->getValue($this->tree));
}
/**
* Tests the report_stats_myprofile_navigation() function without permission.
*/
public function test_report_stats_myprofile_navigation_without_permission() {
// Try to see as a user without permission.
$this->setUser($this->user);
$iscurrentuser = true;
// Enable stats.
set_config('enablestats', true);
report_stats_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('stats', $nodes->getValue($this->tree));
}
}
+121
View File
@@ -0,0 +1,121 @@
<?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 library functions.
*
* @package report_usersessions
* @copyright 2015 onwards Ankit agarwal <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot. '/report/usersessions/lib.php');
/**
* Class report_stats_lib_testcase
*
* @package report_usersessions
* @copyright 2014 onwards Ankit agarwal <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
class report_usersessions_lib_testcase extends advanced_testcase {
/**
* @var stdClass The user.
*/
private $user;
/**
* @var stdClass The course.
*/
private $course;
/**
* @var \core_user\output\myprofile\tree The navigation tree.
*/
private $tree;
public function setUp() {
$this->user = $this->getDataGenerator()->create_user();
$this->course = $this->getDataGenerator()->create_course();
$this->tree = new \core_user\output\myprofile\tree();
$this->resetAfterTest();
}
/**
* Tests the report_userssesions_myprofile_navigation() function as an admin.
*/
public function test_report_usersessions_myprofile_navigation_as_admin() {
$this->setAdminUser();
$iscurrentuser = false;
// Not even admins allowed to pick at other user's sessions.
report_usersessions_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('usersessions', $nodes->getValue($this->tree));
}
/**
* Tests the report_userssesions_myprofile_navigation() function as the currently logged in user.
*/
public function test_report_usersessions_myprofile_navigation_as_current_user() {
$this->setUser($this->user);
$iscurrentuser = true;
report_usersessions_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayHasKey('usersessions', $nodes->getValue($this->tree));
}
/**
* Tests the report_userssesions_myprofile_navigation() function as a guest.
*/
public function test_report_usersessions_myprofile_navigation_as_guest() {
$this->setGuestUser();
$iscurrentuser = true;
report_usersessions_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('usersessions', $nodes->getValue($this->tree));
}
/**
* Tests the report_userssesions_myprofile_navigation() function as a user without permission.
*/
public function test_report_usersessions_myprofile_navigation_without_permission() {
// Try to see as a user without permission.
$user2 = $this->getDataGenerator()->create_user();
$this->setUser($user2);
$iscurrentuser = false;
report_usersessions_myprofile_navigation($this->tree, $this->user, $iscurrentuser, $this->course);
$reflector = new ReflectionObject($this->tree);
$nodes = $reflector->getProperty('nodes');
$nodes->setAccessible(true);
$this->assertArrayNotHasKey('usersessions', $nodes->getValue($this->tree));
}
}