MDL-78528 completion: Add suffix support to avoid duplicated ids

This commit is contained in:
Sara Arjona
2023-08-09 09:12:43 +02:00
parent d4d0483cb1
commit 274db7f747
6 changed files with 194 additions and 50 deletions
+44
View File
@@ -80,6 +80,50 @@ class modlib_test extends \advanced_testcase {
prepare_new_moduleinfo_data($course, $assignmodule->name, $sectionnumber);
}
/**
* Test prepare_new_moduleinfo_data with suffix (which is currently only used by the completion rules).
* @covers ::prepare_new_moduleinfo_data
*/
public function test_prepare_new_moduleinfo_data_with_suffix() {
global $DB;
$this->resetAfterTest(true);
$this->setAdminUser();
$course = self::getDataGenerator()->create_course();
$coursecontext = \context_course::instance($course->id);
// Test with a complex module, like assign.
$assignmodule = $DB->get_record('modules', ['name' => 'assign'], '*', MUST_EXIST);
$sectionnumber = 1;
$suffix = 'mysuffix';
[$module, $context, $cw, $cm, $data] = prepare_new_moduleinfo_data($course, $assignmodule->name, $sectionnumber, $suffix);
$this->assertEquals($assignmodule, $module);
$this->assertEquals($coursecontext, $context);
$this->assertNull($cm); // Not cm yet.
$expecteddata = new \stdClass();
$expecteddata->section = $sectionnumber;
$expecteddata->visible = 1;
$expecteddata->course = $course->id;
$expecteddata->module = $module->id;
$expecteddata->modulename = $module->name;
$expecteddata->groupmode = $course->groupmode;
$expecteddata->groupingid = $course->defaultgroupingid;
$expecteddata->id = '';
$expecteddata->instance = '';
$expecteddata->coursemodule = '';
$expecteddata->advancedgradingmethod_submissions = ''; // Not grading methods enabled by default.
$expecteddata->{'completion' . $suffix} = 0;
$expecteddata->downloadcontent = DOWNLOAD_COURSE_CONTENT_ENABLED;
// Unset untestable.
unset($data->introeditor);
unset($data->_advancedgradingdata);
$this->assertEquals($expecteddata, $data);
$this->assertFalse(property_exists($data, 'completion'));
}
/**
* Test get_moduleinfo_data
*/