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()); }
public function test_create_user_competency() { $this->resetAfterTest(true); $user = $this->getDataGenerator()->create_user(); $lpg = $this->getDataGenerator()->get_plugin_generator('core_competency'); $framework = $lpg->create_framework(); $c1 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id())); $c2 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id())); $c3 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id())); $this->assertEquals(0, user_competency::count_records()); $rc = $lpg->create_user_competency(array('userid' => $user->id, 'competencyid' => $c1->get_id())); $rc = $lpg->create_user_competency(array('userid' => $user->id, 'competencyid' => $c2->get_id())); $this->assertEquals(2, user_competency::count_records()); $this->assertInstanceOf('\\core_competency\\user_competency', $rc); }