. /** * Framework processor tests. * * @package tool_lpmigrate * @copyright 2016 Frédéric Massart - FMCorz.net * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); global $CFG; use core_competency\course_competency; use core_competency\course_module_competency; use tool_lpmigrate\framework_mapper; use tool_lpmigrate\framework_processor; /** * Framework processor testcase. * * @package tool_lpmigrate * @copyright 2016 Frédéric Massart - FMCorz.net * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class tool_lpmigrate_framework_processor_testcase extends advanced_testcase { /** * This sets up a few things, and assign class variables. * * We create 2 frameworks, each with 2 matching competencies and 1 foreign. * Then we create 2 courses, and in each 1 CM. * Then we attach some competencies from the first framework to courses and CM. */ public function setUp() { $this->resetAfterTest(true); $dg = $this->getDataGenerator(); $lpg = $dg->get_plugin_generator('core_competency'); $f1 = $lpg->create_framework(array('idnumber' => 'BIO2015')); $f2 = $lpg->create_framework(array('idnumber' => 'BIO2016')); $f1comps = array(); $f1comps['A1'] = $lpg->create_competency(array('competencyframeworkid' => $f1->get('id'), 'idnumber' => 'A1')); $f1comps['A2'] = $lpg->create_competency(array('competencyframeworkid' => $f1->get('id'), 'idnumber' => 'A2')); $f1comps['A3'] = $lpg->create_competency(array('competencyframeworkid' => $f1->get('id'), 'idnumber' => 'A3')); $f1comps['X1'] = $lpg->create_competency(array('competencyframeworkid' => $f1->get('id'), 'idnumber' => 'X1')); $f2comps = array(); $f2comps['A1'] = $lpg->create_competency(array('competencyframeworkid' => $f2->get('id'), 'idnumber' => 'A1')); $f2comps['A2'] = $lpg->create_competency(array('competencyframeworkid' => $f2->get('id'), 'idnumber' => 'A2')); $f2comps['A3'] = $lpg->create_competency(array('competencyframeworkid' => $f2->get('id'), 'idnumber' => 'A3')); $f2comps['Y1'] = $lpg->create_competency(array('competencyframeworkid' => $f2->get('id'), 'idnumber' => 'Y1')); $c1 = $dg->create_course(array('startdate' => time() - 72000)); $c2 = $dg->create_course(array('startdate' => time() + 72000)); $cms = array( $c1->id => array( 'F1' => $dg->create_module('forum', (object) array('course' => $c1->id)), 'P1' => $dg->create_module('page', (object) array('course' => $c1->id)), 'EmptyA' => $dg->create_module('page', (object) array('course' => $c1->id)), ), $c2->id => array( 'F1' => $dg->create_module('forum', (object) array('course' => $c2->id)), 'EmptyB' => $dg->create_module('page', (object) array('course' => $c2->id)), ), ); // Course CompetencieS. $ccs = array( $c1->id => array( $f1comps['A1']->get('id') => $lpg->create_course_competency(array('courseid' => $c1->id, 'competencyid' => $f1comps['A1']->get('id'))), $f1comps['A3']->get('id') => $lpg->create_course_competency(array('courseid' => $c1->id, 'competencyid' => $f1comps['A3']->get('id'))), $f1comps['X1']->get('id') => $lpg->create_course_competency(array('courseid' => $c1->id, 'competencyid' => $f1comps['X1']->get('id'))), ), $c2->id => array( $f1comps['A2']->get('id') => $lpg->create_course_competency(array('courseid' => $c2->id, 'competencyid' => $f1comps['A2']->get('id'))), $f1comps['A3']->get('id') => $lpg->create_course_competency(array('courseid' => $c2->id, 'competencyid' => $f1comps['A3']->get('id'))), ) ); // Course Module CompetencieS. $cmcs = array( $cms[$c1->id]['F1']->cmid => array( $f1comps['A1']->get('id') => $lpg->create_course_module_competency(array( 'cmid' => $cms[$c1->id]['F1']->cmid, 'competencyid' => $f1comps['A1']->get('id') )), $f1comps['X1']->get('id') => $lpg->create_course_module_competency(array( 'cmid' => $cms[$c1->id]['F1']->cmid, 'competencyid' => $f1comps['X1']->get('id') )), ), $cms[$c1->id]['P1']->cmid => array( $f1comps['A3']->get('id') => $lpg->create_course_module_competency(array( 'cmid' => $cms[$c1->id]['P1']->cmid, 'competencyid' => $f1comps['A3']->get('id') )), ), $cms[$c2->id]['F1']->cmid => array( $f1comps['A2']->get('id') => $lpg->create_course_module_competency(array( 'cmid' => $cms[$c2->id]['F1']->cmid, 'competencyid' => $f1comps['A2']->get('id') )), $f1comps['A3']->get('id') => $lpg->create_course_module_competency(array( 'cmid' => $cms[$c2->id]['F1']->cmid, 'competencyid' => $f1comps['A3']->get('id') )), ), ); $this->assertCourseCompetencyExists($c1, $f1comps['A1']); $this->assertCourseCompetencyExists($c1, $f1comps['A3']); $this->assertCourseCompetencyExists($c1, $f1comps['X1']); $this->assertCourseCompetencyExists($c2, $f1comps['A2']); $this->assertCourseCompetencyExists($c2, $f1comps['A3']); $this->assertModuleCompetencyExists($cms[$c1->id]['F1'], $f1comps['A1']); $this->assertModuleCompetencyExists($cms[$c1->id]['P1'], $f1comps['A3']); $this->assertModuleCompetencyExists($cms[$c1->id]['F1'], $f1comps['X1']); $this->assertModuleCompetencyExists($cms[$c2->id]['F1'], $f1comps['A2']); $this->assertModuleCompetencyExists($cms[$c2->id]['F1'], $f1comps['A3']); $this->f1 = $f1; $this->f1comps = $f1comps; $this->f2 = $f2; $this->f2comps = $f2comps; $this->c1 = $c1; $this->c2 = $c2; $this->cms = $cms; $this->ccs = $ccs; $this->cmcs = $cmcs; } public function test_simple_migration() { $this->setAdminUser(); $mapper = new framework_mapper($this->f1->get('id'), $this->f2->get('id')); $mapper->automap(); $processor = new framework_processor($mapper); $processor->proceed(); $this->assertEquals(2, $processor->get_courses_found_count()); $this->assertEquals(5, $processor->get_expected_course_competency_migrations()); $this->assertEquals(4, $processor->get_course_competency_migrations()); $this->assertEquals(4, $processor->get_course_competency_removals()); $this->assertEquals(3, $processor->get_cms_found_count()); $this->assertEquals(5, $processor->get_expected_module_competency_migrations()); $this->assertEquals(4, $processor->get_module_competency_migrations()); $this->assertEquals(4, $processor->get_module_competency_removals()); $this->assertEquals(array(), $processor->get_warnings()); $this->assertEquals(array(), $processor->get_errors()); $this->assertEquals(array($this->f1comps['X1']->get('id') => true), $processor->get_missing_mappings()); $this->assertCourseCompetencyMigrated($this->c1, $this->f1comps['A1'], $this->f2comps['A1']); $this->assertCourseCompetencyMigrated($this->c1, $this->f1comps['A3'], $this->f2comps['A3']); $this->assertCourseCompetencyMigrated($this->c2, $this->f1comps['A2'], $this->f2comps['A2']); $this->assertCourseCompetencyMigrated($this->c2, $this->f1comps['A3'], $this->f2comps['A3']); $this->assertModuleCompetencyMigrated($this->cms[$this->c1->id]['F1'], $this->f1comps['A1'], $this->f2comps['A1']); $this->assertModuleCompetencyMigrated($this->cms[$this->c1->id]['P1'], $this->f1comps['A3'], $this->f2comps['A3']); $this->assertModuleCompetencyMigrated($this->cms[$this->c2->id]['F1'], $this->f1comps['A2'], $this->f2comps['A2']); $this->assertModuleCompetencyMigrated($this->cms[$this->c2->id]['F1'], $this->f1comps['A3'], $this->f2comps['A3']); $this->assertCourseCompetencyExists($this->c1, $this->f1comps['X1']); $this->assertModuleCompetencyExists($this->cms[$this->c1->id]['F1'], $this->f1comps['X1']); } public function test_remove_when_missing() { $this->setAdminUser(); $mapper = new framework_mapper($this->f1->get('id'), $this->f2->get('id')); $mapper->automap(); $processor = new framework_processor($mapper); $processor->set_remove_when_mapping_is_missing(true); $processor->proceed(); $this->assertEquals(2, $processor->get_courses_found_count()); $this->assertEquals(5, $processor->get_expected_course_competency_migrations()); $this->assertEquals(4, $processor->get_course_competency_migrations()); $this->assertEquals(5, $processor->get_course_competency_removals()); $this->assertEquals(3, $processor->get_cms_found_count()); $this->assertEquals(5, $processor->get_expected_module_competency_migrations()); $this->assertEquals(4, $processor->get_module_competency_migrations()); $this->assertEquals(5, $processor->get_module_competency_removals()); $this->assertCount(0, $processor->get_errors()); $this->assertCount(0, $processor->get_warnings()); $this->assertCourseCompetencyNotExists($this->c1, $this->f1comps['X1']); $this->assertModuleCompetencyNotExists($this->cms[$this->c1->id]['F1'], $this->f1comps['X1']); } public function test_allowed_courses() { $this->setAdminUser(); $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(2, $processor->get_course_competency_migrations()); $this->assertEquals(2, $processor->get_course_competency_removals()); $this->assertEquals(2, $processor->get_cms_found_count()); $this->assertEquals(3, $processor->get_expected_module_competency_migrations()); $this->assertEquals(2, $processor->get_module_competency_migrations()); $this->assertEquals(2, $processor->get_module_competency_removals()); $this->assertCount(0, $processor->get_errors()); $this->assertCount(0, $processor->get_warnings()); $this->assertCourseCompetencyMigrated($this->c1, $this->f1comps['A1'], $this->f2comps['A1']); $this->assertCourseCompetencyMigrated($this->c1, $this->f1comps['A3'], $this->f2comps['A3']); $this->assertModuleCompetencyMigrated($this->cms[$this->c1->id]['F1'], $this->f1comps['A1'], $this->f2comps['A1']); $this->assertModuleCompetencyMigrated($this->cms[$this->c1->id]['P1'], $this->f1comps['A3'], $this->f2comps['A3']); $this->assertCourseCompetencyNotMigrated($this->c2, $this->f1comps['A2'], $this->f2comps['A2']); $this->assertCourseCompetencyNotMigrated($this->c2, $this->f1comps['A3'], $this->f2comps['A3']); $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['A3']); } public function test_disallowed_courses() { $this->setAdminUser(); $mapper = new framework_mapper($this->f1->get('id'), $this->f2->get('id')); $mapper->automap(); $processor = new framework_processor($mapper); $processor->set_disallowedcourses(array($this->c2->id)); $processor->proceed(); $this->assertEquals(1, $processor->get_courses_found_count()); $this->assertEquals(3, $processor->get_expected_course_competency_migrations()); $this->assertEquals(2, $processor->get_course_competency_migrations()); $this->assertEquals(2, $processor->get_course_competency_removals()); $this->assertEquals(2, $processor->get_cms_found_count()); $this->assertEquals(3, $processor->get_expected_module_competency_migrations()); $this->assertEquals(2, $processor->get_module_competency_migrations()); $this->assertEquals(2, $processor->get_module_competency_removals()); $this->assertCount(0, $processor->get_errors()); $this->assertCount(0, $processor->get_warnings()); $this->assertCourseCompetencyMigrated($this->c1, $this->f1comps['A1'], $this->f2comps['A1']); $this->assertCourseCompetencyMigrated($this->c1, $this->f1comps['A3'], $this->f2comps['A3']); $this->assertModuleCompetencyMigrated($this->cms[$this->c1->id]['F1'], $this->f1comps['A1'], $this->f2comps['A1']); $this->assertModuleCompetencyMigrated($this->cms[$this->c1->id]['P1'], $this->f1comps['A3'], $this->f2comps['A3']); $this->assertCourseCompetencyNotMigrated($this->c2, $this->f1comps['A2'], $this->f2comps['A2']); $this->assertCourseCompetencyNotMigrated($this->c2, $this->f1comps['A3'], $this->f2comps['A3']); $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['A3']); } public function test_course_start_date_from() { $this->setAdminUser(); $mapper = new framework_mapper($this->f1->get('id'), $this->f2->get('id')); $mapper->automap(); $processor = new framework_processor($mapper); $processor->set_course_start_date_from(time()); $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(2, $processor->get_course_competency_removals()); $this->assertEquals(1, $processor->get_cms_found_count()); $this->assertEquals(2, $processor->get_expected_module_competency_migrations()); $this->assertEquals(2, $processor->get_module_competency_migrations()); $this->assertEquals(2, $processor->get_module_competency_removals()); $this->assertCount(0, $processor->get_errors()); $this->assertCount(0, $processor->get_warnings()); $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']); $this->assertCourseCompetencyMigrated($this->c2, $this->f1comps['A2'], $this->f2comps['A2']); $this->assertCourseCompetencyMigrated($this->c2, $this->f1comps['A3'], $this->f2comps['A3']); $this->assertModuleCompetencyMigrated($this->cms[$this->c2->id]['F1'], $this->f1comps['A2'], $this->f2comps['A2']); $this->assertModuleCompetencyMigrated($this->cms[$this->c2->id]['F1'], $this->f1comps['A3'], $this->f2comps['A3']); } public function test_destination_competency_exists() { $this->setAdminUser(); $lpg = $this->getDataGenerator()->get_plugin_generator('core_competency'); // Pre-add the new competency to course 1. $lpg->create_course_competency(array('courseid' => $this->c1->id, 'competencyid' => $this->f2comps['A1']->get('id'))); // Pre-add the new competency to module in course 2. $lpg->create_course_module_competency(array( 'cmid' => $this->cms[$this->c2->id]['F1']->cmid, 'competencyid' => $this->f2comps['A2']->get('id') )); $mapper = new framework_mapper($this->f1->get('id'), $this->f2->get('id')); $mapper->automap(); $processor = new framework_processor($mapper); $processor->proceed(); $this->assertEquals(2, $processor->get_courses_found_count()); $this->assertEquals(5, $processor->get_expected_course_competency_migrations()); $this->assertEquals(3, $processor->get_course_competency_migrations()); $this->assertEquals(2, $processor->get_course_competency_removals()); $this->assertEquals(3, $processor->get_cms_found_count()); $this->assertEquals(5, $processor->get_expected_module_competency_migrations()); $this->assertEquals(3, $processor->get_module_competency_migrations()); $this->assertEquals(3, $processor->get_module_competency_removals()); $this->assertEquals(array(), $processor->get_errors()); $warnings = $processor->get_warnings(); $this->assertCount(2, $warnings); $warning = array_shift($warnings); $this->assertEquals($this->c1->id, $warning['courseid']); $this->assertEquals($this->f1comps['A1']->get('id'), $warning['competencyid']); $this->assertEquals(null, $warning['cmid']); $this->assertRegexp('/competency already exists/', $warning['message']); $warning = array_shift($warnings); $this->assertEquals($this->c2->id, $warning['courseid']); $this->assertEquals($this->f1comps['A2']->get('id'), $warning['competencyid']); $this->assertEquals($this->cms[$this->c2->id]['F1']->cmid, $warning['cmid']); $this->assertRegexp('/competency already exists/', $warning['message']); $this->assertCourseCompetencyExists($this->c1, $this->f1comps['A1']); $this->assertModuleCompetencyExists($this->cms[$this->c2->id]['F1'], $this->f1comps['A2']); } public function test_destination_competency_exists_remove_original() { $this->setAdminUser(); $lpg = $this->getDataGenerator()->get_plugin_generator('core_competency'); // Pre-add the new competency to course 1. $lpg->create_course_competency(array('courseid' => $this->c1->id, 'competencyid' => $this->f2comps['A1']->get('id'))); // Pre-add the new competency to module in course 2. $lpg->create_course_module_competency(array( 'cmid' => $this->cms[$this->c2->id]['F1']->cmid, 'competencyid' => $this->f2comps['A2']->get('id') )); $mapper = new framework_mapper($this->f1->get('id'), $this->f2->get('id')); $mapper->automap(); $processor = new framework_processor($mapper); $processor->set_remove_original_when_destination_already_present(true); $processor->proceed(); $this->assertEquals(2, $processor->get_courses_found_count()); $this->assertEquals(5, $processor->get_expected_course_competency_migrations()); $this->assertEquals(3, $processor->get_course_competency_migrations()); $this->assertEquals(4, $processor->get_course_competency_removals()); $this->assertEquals(3, $processor->get_cms_found_count()); $this->assertEquals(5, $processor->get_expected_module_competency_migrations()); $this->assertEquals(3, $processor->get_module_competency_migrations()); $this->assertEquals(4, $processor->get_module_competency_removals()); $this->assertEquals(array(), $processor->get_errors()); $this->assertEquals(array(), $processor->get_warnings()); $this->assertCourseCompetencyNotExists($this->c1, $this->f1comps['A1']); $this->assertModuleCompetencyNotExists($this->cms[$this->c2->id]['F1'], $this->f1comps['A2']); } public function test_permission_exception() { $this->preventResetByRollback(); // Test uses transactions, so we cannot use them for speedy reset. $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']); } /** * Assert that the course competency exists. * * @param stdClass $course The course. * @param competency $competency The competency. */ protected function assertCourseCompetencyExists($course, $competency) { $this->assertTrue(course_competency::record_exists_select("courseid = :courseid AND competencyid = :competencyid", array('courseid' => $course->id, 'competencyid' => $competency->get('id')))); } /** * Assert that the course competency does not exist. * * @param stdClass $course The course. * @param competency $competency The competency. */ protected function assertCourseCompetencyNotExists($course, $competency) { $this->assertFalse(course_competency::record_exists_select("courseid = :courseid AND competencyid = :competencyid", array('courseid' => $course->id, 'competencyid' => $competency->get('id')))); } /** * Assert that the course competency was migrated. * * @param stdClass $course The course. * @param competency $compfrom The competency from. * @param competency $compto The competency to. */ protected function assertCourseCompetencyMigrated($course, $compfrom, $compto) { $ccs = $this->ccs[$course->id]; $this->assertCourseCompetencyNotExists($course, $compfrom); $this->assertCourseCompetencyExists($course, $compto); $before = $ccs[$compfrom->get('id')]; $after = course_competency::get_record(array( 'courseid' => $course->id, 'competencyid' => $compto->get('id') )); $this->assertNotEquals($before->get('id'), $after->get('id')); $this->assertEquals($before->get('courseid'), $after->get('courseid')); $this->assertEquals($before->get('sortorder'), $after->get('sortorder')); $this->assertEquals($before->get('ruleoutcome'), $after->get('ruleoutcome')); } /** * Assert that the course competency was not migrated. * * @param stdClass $course The course. * @param competency $compfrom The competency from. * @param competency $compto The competency to. */ protected function assertCourseCompetencyNotMigrated($course, $compfrom, $compto) { $ccs = $this->ccs[$course->id]; $this->assertCourseCompetencyExists($course, $compfrom); $this->assertCourseCompetencyNotExists($course, $compto); $before = $ccs[$compfrom->get('id')]; $after = $ccs[$compfrom->get('id')]; $this->assertEquals($before->get('id'), $after->get('id')); $this->assertEquals($before->get('courseid'), $after->get('courseid')); $this->assertEquals($before->get('sortorder'), $after->get('sortorder')); $this->assertEquals($before->get('ruleoutcome'), $after->get('ruleoutcome')); } /** * Assert that the course module competency exists. * * @param stdClass $cm The CM. * @param competency $competency The competency. */ protected function assertModuleCompetencyExists($cm, $competency) { $this->assertTrue(course_module_competency::record_exists_select("cmid = :cmid AND competencyid = :competencyid", array('cmid' => $cm->cmid, 'competencyid' => $competency->get('id')))); } /** * Assert that the course module competency does not exist. * * @param stdClass $cm The CM. * @param competency $competency The competency. */ protected function assertModuleCompetencyNotExists($cm, $competency) { $this->assertFalse(course_module_competency::record_exists_select("cmid = :cmid AND competencyid = :competencyid", array('cmid' => $cm->cmid, 'competencyid' => $competency->get('id')))); } /** * Assert that the course module competency was migrated. * * @param stdClass $cm The CM. * @param competency $compfrom The competency from. * @param competency $compto The competency to. */ protected function assertModuleCompetencyMigrated($cm, $compfrom, $compto) { $cmcs = $this->cmcs[$cm->cmid]; $this->assertModuleCompetencyNotExists($cm, $compfrom); $this->assertModuleCompetencyExists($cm, $compto); $before = $cmcs[$compfrom->get('id')]; $after = course_module_competency::get_record(array( 'cmid' => $cm->cmid, 'competencyid' => $compto->get('id') )); $this->assertNotEquals($before->get('id'), $after->get('id')); $this->assertEquals($before->get('cmid'), $after->get('cmid')); $this->assertEquals($before->get('sortorder'), $after->get('sortorder')); $this->assertEquals($before->get('ruleoutcome'), $after->get('ruleoutcome')); } /** * Assert that the course module competency was not migrated. * * @param stdClass $cm The CM. * @param competency $compfrom The competency from. * @param competency $compto The competency to. */ protected function assertModuleCompetencyNotMigrated($cm, $compfrom, $compto) { $cmcs = $this->cmcs[$cm->cmid]; $this->assertModuleCompetencyExists($cm, $compfrom); $this->assertModuleCompetencyNotExists($cm, $compto); $before = $cmcs[$compfrom->get('id')]; $after = $cmcs[$compfrom->get('id')]; $this->assertEquals($before->get('id'), $after->get('id')); $this->assertEquals($before->get('cmid'), $after->get('cmid')); $this->assertEquals($before->get('sortorder'), $after->get('sortorder')); $this->assertEquals($before->get('ruleoutcome'), $after->get('ruleoutcome')); } }