/**
  * Test create_groups
  */
 public function test_create_groups()
 {
     global $DB;
     $this->resetAfterTest(true);
     $course = self::getDataGenerator()->create_course();
     $group1 = array();
     $group1['courseid'] = $course->id;
     $group1['name'] = 'Group Test 1';
     $group1['description'] = 'Group Test 1 description';
     $group1['descriptionformat'] = FORMAT_MOODLE;
     $group1['enrolmentkey'] = 'Test group enrol secret phrase';
     $group2 = array();
     $group2['courseid'] = $course->id;
     $group2['name'] = 'Group Test 2';
     $group2['description'] = 'Group Test 2 description';
     $group3 = array();
     $group3['courseid'] = $course->id;
     $group3['name'] = 'Group Test 3';
     $group3['description'] = 'Group Test 3 description';
     // 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::create_groups(array($group1, $group2));
     // We need to execute the return values cleaning process to simulate the web service server.
     $groups = external_api::clean_returnvalue(core_group_external::create_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');
     $froups = core_group_external::create_groups(array($group3));
 }
 /**
  * Returns description of method result value
  *
  * @return external_description
  * @since Moodle 2.0
  * @deprecated Moodle 2.2 MDL-29106 - Please do not call this function any more.
  * @see core_group_external::create_groups_returns()
  */
 public static function create_groups_returns()
 {
     return core_group_external::create_groups_returns();
 }