Exemplo n.º 1
0
 /**
  * Tests for the user_competency_course data when api::add_evidence() is invoked when
  * grading a user competency in a course.
  */
 public function test_add_evidence_user_competency_course_grade_in_course()
 {
     global $USER;
     $this->resetAfterTest(true);
     $dg = $this->getDataGenerator();
     // Create a course.
     $course = $dg->create_course();
     $record = array('courseid' => $course->id, 'pushratingstouserplans' => false);
     $settings = new course_competency_settings(0, (object) $record);
     $settings->create();
     $coursecontext = context_course::instance($course->id);
     // Create a student and enrol into the course.
     $student = $dg->create_user();
     $studentarch = get_archetype_roles('student');
     $studentrole = array_shift($studentarch);
     $dg->role_assign($studentrole->id, $student->id, $coursecontext->id);
     $dg->enrol_user($student->id, $course->id, $studentrole->id);
     // Create a competency for the course.
     $lpg = $dg->get_plugin_generator('core_competency');
     $framework = $lpg->create_framework();
     // Do not push ratings from course to user plans.
     $comp = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
     $lpg->create_course_competency(array('courseid' => $course->id, 'competencyid' => $comp->get_id()));
     // Query for user_competency_course data.
     $filterparams = array('userid' => $student->id, 'competencyid' => $comp->get_id(), 'courseid' => $course->id);
     // Add evidence that sets a grade to the course.
     $evidence = api::add_evidence($student->id, $comp, $coursecontext, evidence::ACTION_OVERRIDE, 'commentincontext', 'core', null, false, null, 3, $USER->id);
     // Get user competency course record.
     $usercompcourse = \core_competency\user_competency_course::get_record($filterparams);
     // There should be a user_competency_course object when adding a grade.
     $this->assertNotEmpty($usercompcourse);
     $grade = $evidence->get_grade();
     $this->assertEquals($grade, $usercompcourse->get_grade());
     $this->assertEquals(3, $usercompcourse->get_grade());
     $proficiency = $comp->get_proficiency_of_grade($grade);
     $this->assertEquals($proficiency, $usercompcourse->get_proficiency());
     // Confirm that the user competency's grade/proficiency has not been affected by the grade.
     $usercompetencyparams = ['userid' => $student->id, 'competencyid' => $comp->get_id()];
     $usercompetency = \core_competency\user_competency::get_record($usercompetencyparams);
     $this->assertNotEmpty($usercompetency);
     $this->assertNotEquals($usercompcourse->get_grade(), $usercompetency->get_grade());
     $this->assertNotEquals($usercompcourse->get_proficiency(), $usercompetency->get_proficiency());
 }
Exemplo n.º 2
0
 /**
  * Update the competency settings for a course.
  *
  * Requires moodle/competency:coursecompetencyconfigure capability at the course context.
  *
  * @param int $courseid The course id
  * @param stdClass $settings List of settings. The only valid setting ATM is pushratginstouserplans (boolean).
  * @return bool
  */
 public static function update_course_competency_settings($courseid, $settings)
 {
     static::require_enabled();
     $settings = (object) $settings;
     // Get all the valid settings.
     $pushratingstouserplans = isset($settings->pushratingstouserplans) ? $settings->pushratingstouserplans : false;
     // First we do a permissions check.
     if (!course_competency_settings::can_manage_course($courseid)) {
         $context = context_course::instance($courseid);
         throw new required_capability_exception($context, 'moodle/competency:coursecompetencyconfigure', 'nopermissions', '');
     }
     $exists = course_competency_settings::get_record(array('courseid' => $courseid));
     // Now update or insert.
     if ($exists) {
         $settings = $exists;
         $settings->set_pushratingstouserplans($pushratingstouserplans);
         return $settings->update();
     } else {
         $data = (object) array('courseid' => $courseid, 'pushratingstouserplans' => $pushratingstouserplans);
         $settings = new course_competency_settings(0, $data);
         $result = $settings->create();
         return !empty($result);
     }
 }