Exemple #1
0
 public function test_observe_course_completed()
 {
     $this->resetAfterTest(true);
     $dg = $this->getDataGenerator();
     $lpg = $dg->get_plugin_generator('core_competency');
     // Set-up users, framework, competencies and course competencies.
     $course = $dg->create_course();
     $coursectx = context_course::instance($course->id);
     $u1 = $dg->create_user();
     $f1 = $lpg->create_framework();
     $c1 = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id()));
     $c2 = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id()));
     $c3 = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id()));
     $c4 = $lpg->create_competency(array('competencyframeworkid' => $f1->get_id()));
     $cc1 = $lpg->create_course_competency(array('competencyid' => $c1->get_id(), 'courseid' => $course->id, 'ruleoutcome' => \core_competency\course_competency::OUTCOME_NONE));
     $cc2 = $lpg->create_course_competency(array('competencyid' => $c2->get_id(), 'courseid' => $course->id, 'ruleoutcome' => \core_competency\course_competency::OUTCOME_EVIDENCE));
     $cc3 = $lpg->create_course_competency(array('competencyid' => $c3->get_id(), 'courseid' => $course->id, 'ruleoutcome' => \core_competency\course_competency::OUTCOME_RECOMMEND));
     $cc4 = $lpg->create_course_competency(array('competencyid' => $c4->get_id(), 'courseid' => $course->id, 'ruleoutcome' => \core_competency\course_competency::OUTCOME_COMPLETE));
     $event = \core\event\course_completed::create(array('objectid' => 1, 'relateduserid' => $u1->id, 'context' => $coursectx, 'courseid' => $course->id, 'other' => array('relateduserid' => $u1->id)));
     $this->assertEquals(0, \core_competency\user_competency::count_records());
     $this->assertEquals(0, \core_competency\evidence::count_records());
     // Let's go!
     api::observe_course_completed($event);
     $this->assertEquals(3, \core_competency\user_competency::count_records());
     $this->assertEquals(3, \core_competency\evidence::count_records());
     // Outcome NONE did nothing.
     $this->assertFalse(\core_competency\user_competency::record_exists_select('userid = :uid AND competencyid = :cid', array('uid' => $u1->id, 'cid' => $c1->get_id())));
     // Outcome evidence.
     $uc2 = \core_competency\user_competency::get_record(array('userid' => $u1->id, 'competencyid' => $c2->get_id()));
     $ev2 = \core_competency\evidence::get_record(array('usercompetencyid' => $uc2->get_id()));
     $this->assertEquals(null, $uc2->get_grade());
     $this->assertEquals(null, $uc2->get_proficiency());
     $this->assertEquals(\core_competency\user_competency::STATUS_IDLE, $uc2->get_status());
     $this->assertEquals('evidence_coursecompleted', $ev2->get_descidentifier());
     $this->assertEquals('core_competency', $ev2->get_desccomponent());
     $this->assertEquals($course->shortname, $ev2->get_desca());
     $this->assertStringEndsWith('/report/completion/index.php?course=' . $course->id, $ev2->get_url());
     $this->assertEquals(null, $ev2->get_grade());
     $this->assertEquals($coursectx->id, $ev2->get_contextid());
     $this->assertEquals(\core_competency\evidence::ACTION_LOG, $ev2->get_action());
     $this->assertEquals(null, $ev2->get_actionuserid());
     // Outcome recommend.
     $uc3 = \core_competency\user_competency::get_record(array('userid' => $u1->id, 'competencyid' => $c3->get_id()));
     $ev3 = \core_competency\evidence::get_record(array('usercompetencyid' => $uc3->get_id()));
     $this->assertEquals(null, $uc3->get_grade());
     $this->assertEquals(null, $uc3->get_proficiency());
     $this->assertEquals(\core_competency\user_competency::STATUS_WAITING_FOR_REVIEW, $uc3->get_status());
     $this->assertEquals('evidence_coursecompleted', $ev3->get_descidentifier());
     $this->assertEquals('core_competency', $ev3->get_desccomponent());
     $this->assertEquals($course->shortname, $ev3->get_desca());
     $this->assertStringEndsWith('/report/completion/index.php?course=' . $course->id, $ev3->get_url());
     $this->assertEquals(null, $ev3->get_grade());
     $this->assertEquals($coursectx->id, $ev3->get_contextid());
     $this->assertEquals(\core_competency\evidence::ACTION_LOG, $ev3->get_action());
     $this->assertEquals(null, $ev3->get_actionuserid());
     // Outcome complete.
     $uc4 = \core_competency\user_competency::get_record(array('userid' => $u1->id, 'competencyid' => $c4->get_id()));
     $ev4 = \core_competency\evidence::get_record(array('usercompetencyid' => $uc4->get_id()));
     $this->assertEquals(3, $uc4->get_grade());
     $this->assertEquals(1, $uc4->get_proficiency());
     $this->assertEquals(\core_competency\user_competency::STATUS_IDLE, $uc4->get_status());
     $this->assertEquals('evidence_coursecompleted', $ev4->get_descidentifier());
     $this->assertEquals('core_competency', $ev4->get_desccomponent());
     $this->assertEquals($course->shortname, $ev4->get_desca());
     $this->assertStringEndsWith('/report/completion/index.php?course=' . $course->id, $ev4->get_url());
     $this->assertEquals(3, $ev4->get_grade());
     $this->assertEquals($coursectx->id, $ev4->get_contextid());
     $this->assertEquals(\core_competency\evidence::ACTION_COMPLETE, $ev4->get_action());
     $this->assertEquals(null, $ev4->get_actionuserid());
 }