MDL-37810 roles: added manager case to test_get_user_roles_in_course()

Managers can assign managers, and should be able to see that role on
the course profile page, as a link to the participants page.
This commit is contained in:
Jake Dallimore
2017-09-18 10:22:54 +08:00
parent 7fb6fdf6a7
commit cb617fa262
+23
View File
@@ -1537,6 +1537,7 @@ class core_accesslib_testcase extends advanced_testcase {
$teacherrole = $DB->get_record('role', array('shortname'=>'editingteacher'), '*', MUST_EXIST);
$studentrole = $DB->get_record('role', array('shortname'=>'student'), '*', MUST_EXIST);
$managerrole = $DB->get_record('role', array('shortname' => 'manager'), '*', MUST_EXIST);
$course = $this->getDataGenerator()->create_course();
$coursecontext = context_course::instance($course->id);
$teacherrename = (object)array('roleid'=>$teacherrole->id, 'name'=>'Učitel', 'contextid'=>$coursecontext->id);
@@ -1545,6 +1546,7 @@ class core_accesslib_testcase extends advanced_testcase {
$roleids = explode(',', $CFG->profileroles); // Should include teacher and student in new installs.
$this->assertTrue(in_array($teacherrole->id, $roleids));
$this->assertTrue(in_array($studentrole->id, $roleids));
$this->assertFalse(in_array($managerrole->id, $roleids));
$user1 = $this->getDataGenerator()->create_user();
role_assign($teacherrole->id, $user1->id, $coursecontext->id);
@@ -1552,6 +1554,8 @@ class core_accesslib_testcase extends advanced_testcase {
$user2 = $this->getDataGenerator()->create_user();
role_assign($studentrole->id, $user2->id, $coursecontext->id);
$user3 = $this->getDataGenerator()->create_user();
$user4 = $this->getDataGenerator()->create_user();
role_assign($managerrole->id, $user4->id, $coursecontext->id);
$roles = get_user_roles_in_course($user1->id, $course->id);
$this->assertEquals(1, preg_match_all('/,/', $roles, $matches));
@@ -1563,6 +1567,25 @@ class core_accesslib_testcase extends advanced_testcase {
$roles = get_user_roles_in_course($user3->id, $course->id);
$this->assertSame('', $roles);
// Managers should be able to see a link to their own role type, given they can assign it in the context.
$this->setUser($user4);
$roles = get_user_roles_in_course($user4->id, $course->id);
$this->assertNotEmpty($roles);
$this->assertEquals(1, count(explode(',', $roles)));
$this->assertTrue(strpos($roles, role_get_name($managerrole, $coursecontext)) !== false);
// Managers should see 2 roles if viewing a user who has been enrolled as a student and a teacher in the course.
$roles = get_user_roles_in_course($user1->id, $course->id);
$this->assertEquals(2, count(explode(',', $roles)));
$this->assertTrue(strpos($roles, role_get_name($studentrole, $coursecontext)) !== false);
$this->assertTrue(strpos($roles, role_get_name($teacherrole, $coursecontext)) !== false);
// Students should not see the manager role if viewing a manager's profile.
$this->setUser($user2);
$roles = get_user_roles_in_course($user4->id, $course->id);
$this->assertEmpty($roles); // Should see 0 roles on the manager's profile.
$this->assertFalse(strpos($roles, role_get_name($managerrole, $coursecontext)) !== false);
}
/**