/** * Test validation on grade on user_competency. */ public function test_validate_grade_in_user_competency() { global $DB; $this->resetAfterTest(true); $this->setAdminUser(); $dg = $this->getDataGenerator(); $lpg = $this->getDataGenerator()->get_plugin_generator('core_competency'); $user = $dg->create_user(); $s1 = $dg->create_scale(array("scale" => "value1, value2")); $s2 = $dg->create_scale(array("scale" => "value3, value4, value5, value6")); $scaleconfiguration1 = '[{"scaleid":"' . $s1->id . '"},{"name":"value1","id":1,"scaledefault":1,"proficient":0},' . '{"name":"value2","id":2,"scaledefault":0,"proficient":1}]'; $scaleconfiguration2 = '[{"scaleid":"' . $s2->id . '"},{"name":"value3","id":1,"scaledefault":1,"proficient":0},' . '{"name":"value4","id":2,"scaledefault":0,"proficient":1}]'; // Create a framework with scale configuration1. $frm = array('scaleid' => $s1->id, 'scaleconfiguration' => $scaleconfiguration1); $framework = $lpg->create_framework($frm); $c1 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id())); // Create competency with its own scale configuration. $c2 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id(), 'scaleid' => $s2->id, 'scaleconfiguration' => $scaleconfiguration2)); // Detecte invalid grade in competency using its framework competency scale. try { $usercompetency = new user_competency(0, (object) array('userid' => $user->id, 'competencyid' => $c1->get_id(), 'proficiency' => true, 'grade' => 3)); $usercompetency->create(); $this->fail('Invalid grade not detected in framework scale'); } catch (\core_competency\invalid_persistent_exception $e) { $this->assertTrue(true); } // Detecte invalid grade in competency using its own scale. try { $usercompetency = new user_competency(0, (object) array('userid' => $user->id, 'competencyid' => $c2->get_id(), 'proficiency' => true, 'grade' => 5)); $usercompetency->create(); $this->fail('Invalid grade not detected in competency scale'); } catch (\core_competency\invalid_persistent_exception $e) { $this->assertTrue(true); } // Accept valid grade in competency using its framework competency scale. try { $usercompetency = new user_competency(0, (object) array('userid' => $user->id, 'competencyid' => $c1->get_id(), 'proficiency' => true, 'grade' => 1)); $usercompetency->create(); $this->assertTrue(true); } catch (\core_competency\invalid_persistent_exception $e) { $this->fail('Valide grade rejected in framework scale'); } // Accept valid grade in competency using its framework competency scale. try { $usercompetency = new user_competency(0, (object) array('userid' => $user->id, 'competencyid' => $c2->get_id(), 'proficiency' => true, 'grade' => 4)); $usercompetency->create(); $this->assertTrue(true); } catch (\core_competency\invalid_persistent_exception $e) { $this->fail('Valide grade rejected in competency scale'); } }
/** * Create a new user competency. * * @param array|stdClass $record * @return user_competency */ public function create_user_competency($record = null) { $record = (object) $record; if (!isset($record->userid)) { throw new coding_exception('The userid value is required.'); } if (!isset($record->competencyid)) { throw new coding_exception('The competencyid value is required.'); } $usercompetency = new user_competency(0, $record); $usercompetency->create(); return $usercompetency; }