/**
  * Get groups definition specified by ids
  *
  * @param array $groupids arrays of group ids
  * @return array of group objects (id, courseid, name, enrolmentkey)
  * @since Moodle 2.0
  * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
  * @see core_group_external::get_groups()
  */
 public static function get_groups($groupids)
 {
     return core_group_external::get_groups($groupids);
 }
 /**
  * Test get_groups
  */
 public function test_get_groups()
 {
     global $DB;
     $this->resetAfterTest(true);
     $course = self::getDataGenerator()->create_course();
     $group1data = array();
     $group1data['courseid'] = $course->id;
     $group1data['name'] = 'Group Test 1';
     $group1data['description'] = 'Group Test 1 description';
     $group1data['descriptionformat'] = FORMAT_MOODLE;
     $group1data['enrolmentkey'] = 'Test group enrol secret phrase';
     $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);
     // Set the required capabilities by the external function
     $context = context_course::instance($course->id);
     $roleid = $this->assignUserCapability('moodle/course:managegroups', $context->id);
     $this->assignUserCapability('moodle/course:view', $context->id, $roleid);
     // Call the external function.
     $groups = core_group_external::get_groups(array($group1->id, $group2->id));
     // We need to execute the return values cleaning process to simulate the web service server.
     $groups = external_api::clean_returnvalue(core_group_external::get_groups_returns(), $groups);
     // Checks against DB values
     $this->assertEquals(2, count($groups));
     foreach ($groups as $group) {
         $dbgroup = $DB->get_record('groups', array('id' => $group['id']), '*', MUST_EXIST);
         switch ($dbgroup->name) {
             case $group1->name:
                 $groupdescription = $group1->description;
                 $groupcourseid = $group1->courseid;
                 $this->assertEquals($dbgroup->descriptionformat, $group1->descriptionformat);
                 $this->assertEquals($dbgroup->enrolmentkey, $group1->enrolmentkey);
                 break;
             case $group2->name:
                 $groupdescription = $group2->description;
                 $groupcourseid = $group2->courseid;
                 break;
             default:
                 throw new moodle_exception('unknowgroupname');
                 break;
         }
         $this->assertEquals($dbgroup->description, $groupdescription);
         $this->assertEquals($dbgroup->courseid, $groupcourseid);
     }
     // Call without required capability
     $this->unassignUserCapability('moodle/course:managegroups', $context->id, $roleid);
     $this->setExpectedException('required_capability_exception');
     $groups = core_group_external::get_groups(array($group1->id, $group2->id));
 }