webservice MDL-23943 fix moodle_enrol_get_enrolled_users (return function, return value, sql result not unique, param name never used) + add unit test

This commit is contained in:
jerome mouneyrac
2010-08-30 07:48:09 +00:00
parent 9f5c39b527
commit b02b5fb74c
2 changed files with 55 additions and 9 deletions
+17 -7
View File
@@ -67,7 +67,7 @@ class moodle_enrol_external extends external_api {
$coursecontext = get_context_instance(CONTEXT_COURSE, $params['courseid']);
if ($courseid == SITEID) {
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
$context = get_context_instance(CONTEXT_SYSTEM);
} else {
$context = $coursecontext;
}
@@ -101,13 +101,21 @@ class moodle_enrol_external extends external_api {
}
list($sql, $params) = get_enrolled_sql($coursecontext, $withcapability, $groupid, $onlyactive);
$sql = "SELECT e.courseid, ue.userid
$sql = "SELECT DISTINCT ue.userid, e.courseid
FROM {user_enrolments} ue
JOIN {enrol} e ON (e.id = ue.enrolid)
WHERE e.courseid = :courseid AND ue.userid IN ($sql)";
$params['courseid'] = $courseid;
return $DB->get_records_sql($sql, $params);
$enrolledusers = $DB->get_records_sql($sql, $params);
$result = array();
foreach ($enrolledusers as $enrolleduser) {
$result[] = array('courseid' => $enrolleduser->courseid,
'userid' => $enrolleduser->userid);
}
return $result;
}
/**
@@ -115,10 +123,12 @@ class moodle_enrol_external extends external_api {
* @return external_description
*/
public static function get_enrolled_users_returns() {
return new external_single_structure(
array(
'courseid' => new external_value(PARAM_INT, 'id of course'),
'userid' => new external_value(PARAM_INT, 'id of user'),
return new external_multiple_structure(
new external_single_structure(
array(
'courseid' => new external_value(PARAM_INT, 'id of course'),
'userid' => new external_value(PARAM_INT, 'id of user'),
)
)
);
}
+38 -2
View File
@@ -71,6 +71,7 @@ class webservice_test extends UnitTestCase {
'moodle_group_get_groups' => false,
'moodle_course_get_courses' => false,
'moodle_user_get_users_by_id' => false,
'moodle_enrol_get_enrolled_users' => false
);
////// WRITE DB tests ////
@@ -213,6 +214,41 @@ class webservice_test extends UnitTestCase {
$this->assertEqual(count($users), count($userids));
}
function moodle_enrol_get_enrolled_users($client) {
global $DB;
//function settings
$withcapability = '';
$groupid = null;
$onlyactive = false;
$dbcourses = $DB->get_records('course');
$function = 'moodle_enrol_get_enrolled_users';
foreach ($dbcourses as $dbcourse) {
$params = array();
$coursecontext = get_context_instance(CONTEXT_COURSE, $dbcourse->id);
list($sql, $params) = get_enrolled_sql($coursecontext, $withcapability, $groupid, $onlyactive);
$sql = "SELECT DISTINCT ue.userid, e.courseid
FROM {user_enrolments} ue
JOIN {enrol} e ON (e.id = ue.enrolid)
WHERE e.courseid = :courseid AND ue.userid IN ($sql)";
$params['courseid'] = $dbcourse->id;
$enrolledusers = $DB->get_records_sql($sql, $params);
$wsparams = array('courseid' => $dbcourse->id, 'withcapability' => $withcapability,
'groupid' => $groupid, 'onlyactive' => $onlyactive);
$resultusers = $client->call($function, $wsparams);
$this->assertEqual(count($resultusers), count($enrolledusers));
}
}
function moodle_course_get_courses($client) {
global $DB;
@@ -302,7 +338,7 @@ class webservice_test extends UnitTestCase {
$themeobjects = get_list_of_themes();
$theme = key($themeobjects);
$categoryid = $DB->get_record('course_categories', array(), '*', IGNORE_MULTIPLE)->id;
$categoryid = empty($categoryid)?0:$categoryid;
$categoryid = empty($categoryid) ? 0 : $categoryid;
$course1 = new stdClass();
$course1->fullname = 'Test Data create course 1';
@@ -386,7 +422,7 @@ class webservice_test extends UnitTestCase {
$dbcourse2 = $DB->get_record('course', array('fullname' => $course2->fullname));
$this->assertEqual($dbcourse2->fullname, $course2->fullname);
$this->assertEqual($dbcourse2->shortname, $course2->shortname);
$this->assertEqual($dbcourse2->category, $course2->categoryid );
$this->assertEqual($dbcourse2->category, $course2->categoryid);
$this->assertEqual($dbcourse2->summaryformat, FORMAT_MOODLE);
$this->assertEqual($dbcourse2->format, $courseconfig->format);
$this->assertEqual($dbcourse2->showgrades, $courseconfig->showgrades);