/**
  * Construct.
  *
  * @param context $pagecontext The current page context.
  * @param framework_processor $processor The processor.
  * @param competency_framework $frameworkfrom Framework from.
  * @param competency_framework $frameworkto Framework to.
  * @param array $unmappedfrom Competencies from unmapped.
  * @param array $unmappedto Competencies to unmapped.
  */
 public function __construct(context $pagecontext, framework_processor $processor, competency_framework $frameworkfrom, competency_framework $frameworkto, array $unmappedfrom = array(), array $unmappedto = array())
 {
     if (!$processor->has_run()) {
         throw new \coding_exception('The processor has not run.');
     }
     $this->pagecontext = $pagecontext;
     $this->processor = $processor;
     $this->unmappedfrom = $unmappedfrom;
     $this->unmappedto = $unmappedto;
     $this->frameworkfrom = $frameworkfrom;
     $this->frameworkto = $frameworkto;
 }
Example #2
0
 public function test_permission_exception()
 {
     global $DB;
     if ($DB->get_dbfamily() === 'postgres' or $DB->get_dbfamily() === 'mssql') {
         $this->markTestSkipped('The processor is having issues with the transaction initialised in ' . 'advanced_testcase::runBare().');
         return;
     }
     $dg = $this->getDataGenerator();
     $u = $dg->create_user();
     $role = $dg->create_role();
     $sysctx = context_system::instance();
     $dg->enrol_user($u->id, $this->c1->id, 'editingteacher');
     $dg->enrol_user($u->id, $this->c2->id, 'editingteacher');
     assign_capability('moodle/competency:coursecompetencymanage', CAP_PROHIBIT, $role, $sysctx->id);
     role_assign($role, $u->id, context_course::instance($this->c1->id)->id);
     role_assign($role, $u->id, context_module::instance($this->cms[$this->c2->id]['F1']->cmid)->id);
     accesslib_clear_all_caches_for_unit_testing();
     $this->setUser($u);
     // Do C1 first.
     $mapper = new framework_mapper($this->f1->get_id(), $this->f2->get_id());
     $mapper->automap();
     $processor = new framework_processor($mapper);
     $processor->set_allowedcourses(array($this->c1->id));
     $processor->proceed();
     $this->assertEquals(1, $processor->get_courses_found_count());
     $this->assertEquals(3, $processor->get_expected_course_competency_migrations());
     $this->assertEquals(0, $processor->get_course_competency_migrations());
     $this->assertEquals(0, $processor->get_course_competency_removals());
     $this->assertEquals(2, $processor->get_cms_found_count());
     $this->assertEquals(3, $processor->get_expected_module_competency_migrations());
     $this->assertEquals(0, $processor->get_module_competency_migrations());
     $this->assertEquals(0, $processor->get_module_competency_removals());
     $this->assertEquals(array(), $processor->get_warnings());
     $errors = $processor->get_errors();
     $this->assertCount(2, $errors);
     $this->assertEquals($this->c1->id, $errors[0]['courseid']);
     $this->assertEquals($this->f1comps['A1']->get_id(), $errors[0]['competencyid']);
     $this->assertEquals(null, $errors[0]['cmid']);
     $this->assertRegexp('/Sorry, but you do not currently have permissions to do that/', $errors[0]['message']);
     $this->assertEquals($this->f1comps['A3']->get_id(), $errors[1]['competencyid']);
     $this->assertCourseCompetencyNotMigrated($this->c1, $this->f1comps['A1'], $this->f2comps['A1']);
     $this->assertCourseCompetencyNotMigrated($this->c1, $this->f1comps['A3'], $this->f2comps['A3']);
     $this->assertModuleCompetencyNotMigrated($this->cms[$this->c1->id]['F1'], $this->f1comps['A1'], $this->f2comps['A1']);
     $this->assertModuleCompetencyNotMigrated($this->cms[$this->c1->id]['P1'], $this->f1comps['A3'], $this->f2comps['A3']);
     // Do C2 now.
     $processor = new framework_processor($mapper);
     $processor->set_allowedcourses(array($this->c2->id));
     $processor->proceed();
     $this->assertEquals(1, $processor->get_courses_found_count());
     $this->assertEquals(2, $processor->get_expected_course_competency_migrations());
     $this->assertEquals(2, $processor->get_course_competency_migrations());
     $this->assertEquals(0, $processor->get_course_competency_removals());
     $this->assertEquals(1, $processor->get_cms_found_count());
     $this->assertEquals(2, $processor->get_expected_module_competency_migrations());
     $this->assertEquals(0, $processor->get_module_competency_migrations());
     $this->assertEquals(0, $processor->get_module_competency_removals());
     $this->assertEquals(array(), $processor->get_warnings());
     $errors = $processor->get_errors();
     $this->assertCount(2, $errors);
     $this->assertEquals($this->c2->id, $errors[0]['courseid']);
     $this->assertEquals($this->f1comps['A2']->get_id(), $errors[0]['competencyid']);
     $this->assertEquals($this->cms[$this->c2->id]['F1']->cmid, $errors[0]['cmid']);
     $this->assertRegexp('/Sorry, but you do not currently have permissions to do that/', $errors[0]['message']);
     $this->assertEquals($this->f1comps['A3']->get_id(), $errors[1]['competencyid']);
     // The new competencies were added to the course, but the old ones were not removed because they are still in modules.
     $this->assertCourseCompetencyExists($this->c2, $this->f1comps['A2']);
     $this->assertCourseCompetencyExists($this->c2, $this->f1comps['A3']);
     $this->assertCourseCompetencyExists($this->c2, $this->f2comps['A2']);
     $this->assertCourseCompetencyExists($this->c2, $this->f2comps['A3']);
     // Module competencies were not migrated because permissions are lacking.
     $this->assertModuleCompetencyNotMigrated($this->cms[$this->c2->id]['F1'], $this->f1comps['A2'], $this->f2comps['A2']);
     $this->assertModuleCompetencyNotMigrated($this->cms[$this->c2->id]['F1'], $this->f1comps['A3'], $this->f2comps['A2']);
 }