Beispiel #1
0
 /**
  * Test get_groups
  */
 public function test_get_course_user_groups()
 {
     global $DB;
     $this->resetAfterTest(true);
     $student1 = self::getDataGenerator()->create_user();
     $student2 = self::getDataGenerator()->create_user();
     $teacher = self::getDataGenerator()->create_user();
     $course = self::getDataGenerator()->create_course();
     $emptycourse = self::getDataGenerator()->create_course();
     $studentrole = $DB->get_record('role', array('shortname' => 'student'));
     $this->getDataGenerator()->enrol_user($student1->id, $course->id, $studentrole->id);
     $this->getDataGenerator()->enrol_user($student2->id, $course->id, $studentrole->id);
     $teacherrole = $DB->get_record('role', array('shortname' => 'editingteacher'));
     $this->getDataGenerator()->enrol_user($teacher->id, $course->id, $teacherrole->id);
     $this->getDataGenerator()->enrol_user($teacher->id, $emptycourse->id, $teacherrole->id);
     $group1data = array();
     $group1data['courseid'] = $course->id;
     $group1data['name'] = 'Group Test 1';
     $group1data['description'] = 'Group Test 1 description';
     $group1data['idnumber'] = 'TEST1';
     $group2data = array();
     $group2data['courseid'] = $course->id;
     $group2data['name'] = 'Group Test 2';
     $group2data['description'] = 'Group Test 2 description';
     $group1 = self::getDataGenerator()->create_group($group1data);
     $group2 = self::getDataGenerator()->create_group($group2data);
     groups_add_member($group1->id, $student1->id);
     groups_add_member($group1->id, $student2->id);
     groups_add_member($group2->id, $student1->id);
     $this->setUser($student1);
     $groups = core_group_external::get_course_user_groups($course->id, $student1->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     // Check that I see my groups.
     $this->assertCount(2, $groups['groups']);
     $this->setUser($student2);
     $groups = core_group_external::get_course_user_groups($course->id, $student2->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     // Check that I see my groups.
     $this->assertCount(1, $groups['groups']);
     $this->assertEquals($group1data['name'], $groups['groups'][0]['name']);
     $this->assertEquals($group1data['description'], $groups['groups'][0]['description']);
     $this->assertEquals($group1data['idnumber'], $groups['groups'][0]['idnumber']);
     $this->setUser($teacher);
     $groups = core_group_external::get_course_user_groups($course->id, $student1->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     // Check that a teacher can see student groups.
     $this->assertCount(2, $groups['groups']);
     $groups = core_group_external::get_course_user_groups($course->id, $student2->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     // Check that a teacher can see student groups.
     $this->assertCount(1, $groups['groups']);
     // Check permissions.
     $this->setUser($student1);
     try {
         $groups = core_group_external::get_course_user_groups($course->id, $student2->id);
     } catch (moodle_exception $e) {
         $this->assertEquals('accessdenied', $e->errorcode);
     }
     try {
         $groups = core_group_external::get_course_user_groups($emptycourse->id, $student2->id);
     } catch (moodle_exception $e) {
         $this->assertEquals('requireloginerror', $e->errorcode);
     }
     $this->setUser($teacher);
     // Check warnings.
     $groups = core_group_external::get_course_user_groups($emptycourse->id, $student1->id);
     $groups = external_api::clean_returnvalue(core_group_external::get_course_user_groups_returns(), $groups);
     $this->assertCount(1, $groups['warnings']);
 }