Example #1
0
 /**
  * Test workshop::check_group_membership() functionality.
  */
 public function test_check_group_membership()
 {
     global $DB, $CFG;
     $this->resetAfterTest();
     $courseid = $this->course->id;
     $generator = $this->getDataGenerator();
     // Make test groups.
     $group1 = $generator->create_group(array('courseid' => $courseid));
     $group2 = $generator->create_group(array('courseid' => $courseid));
     $group3 = $generator->create_group(array('courseid' => $courseid));
     // Revoke the accessallgroups from non-editing teachers (tutors).
     $roleids = $DB->get_records_menu('role', null, '', 'shortname, id');
     unassign_capability('moodle/site:accessallgroups', $roleids['teacher']);
     // Create test use accounts.
     $teacher1 = $generator->create_user();
     $tutor1 = $generator->create_user();
     $tutor2 = $generator->create_user();
     $student1 = $generator->create_user();
     $student2 = $generator->create_user();
     $student3 = $generator->create_user();
     // Enrol the teacher (has the access all groups permission).
     $generator->enrol_user($teacher1->id, $courseid, $roleids['editingteacher']);
     // Enrol tutors (can not access all groups).
     $generator->enrol_user($tutor1->id, $courseid, $roleids['teacher']);
     $generator->enrol_user($tutor2->id, $courseid, $roleids['teacher']);
     // Enrol students.
     $generator->enrol_user($student1->id, $courseid, $roleids['student']);
     $generator->enrol_user($student2->id, $courseid, $roleids['student']);
     $generator->enrol_user($student3->id, $courseid, $roleids['student']);
     // Add users in groups.
     groups_add_member($group1, $tutor1);
     groups_add_member($group2, $tutor2);
     groups_add_member($group1, $student1);
     groups_add_member($group2, $student2);
     groups_add_member($group3, $student3);
     // Workshop with no groups.
     $workshopitem1 = $this->getDataGenerator()->create_module('workshop', ['course' => $courseid, 'groupmode' => NOGROUPS]);
     $cm = get_coursemodule_from_instance('workshop', $workshopitem1->id, $courseid, false, MUST_EXIST);
     $workshop1 = new testable_workshop($workshopitem1, $cm, $this->course);
     $this->setUser($teacher1);
     $this->assertTrue($workshop1->check_group_membership($student1->id));
     $this->assertTrue($workshop1->check_group_membership($student2->id));
     $this->assertTrue($workshop1->check_group_membership($student3->id));
     $this->setUser($tutor1);
     $this->assertTrue($workshop1->check_group_membership($student1->id));
     $this->assertTrue($workshop1->check_group_membership($student2->id));
     $this->assertTrue($workshop1->check_group_membership($student3->id));
     // Workshop in visible groups mode.
     $workshopitem2 = $this->getDataGenerator()->create_module('workshop', ['course' => $courseid, 'groupmode' => VISIBLEGROUPS]);
     $cm = get_coursemodule_from_instance('workshop', $workshopitem2->id, $courseid, false, MUST_EXIST);
     $workshop2 = new testable_workshop($workshopitem2, $cm, $this->course);
     $this->setUser($teacher1);
     $this->assertTrue($workshop2->check_group_membership($student1->id));
     $this->assertTrue($workshop2->check_group_membership($student2->id));
     $this->assertTrue($workshop2->check_group_membership($student3->id));
     $this->setUser($tutor1);
     $this->assertTrue($workshop2->check_group_membership($student1->id));
     $this->assertTrue($workshop2->check_group_membership($student2->id));
     $this->assertTrue($workshop2->check_group_membership($student3->id));
     // Workshop in separate groups mode.
     $workshopitem3 = $this->getDataGenerator()->create_module('workshop', ['course' => $courseid, 'groupmode' => SEPARATEGROUPS]);
     $cm = get_coursemodule_from_instance('workshop', $workshopitem3->id, $courseid, false, MUST_EXIST);
     $workshop3 = new testable_workshop($workshopitem3, $cm, $this->course);
     $this->setUser($teacher1);
     $this->assertTrue($workshop3->check_group_membership($student1->id));
     $this->assertTrue($workshop3->check_group_membership($student2->id));
     $this->assertTrue($workshop3->check_group_membership($student3->id));
     $this->setUser($tutor1);
     $this->assertTrue($workshop3->check_group_membership($student1->id));
     $this->assertFalse($workshop3->check_group_membership($student2->id));
     $this->assertFalse($workshop3->check_group_membership($student3->id));
     $this->setUser($tutor2);
     $this->assertFalse($workshop3->check_group_membership($student1->id));
     $this->assertTrue($workshop3->check_group_membership($student2->id));
     $this->assertFalse($workshop3->check_group_membership($student3->id));
 }