MDL-75143 mod_data: Add user support to preset behat generator

The 'user' parameter has been added to the 'mod_data > presets'
generator, to let define the author of the preset.
When it's not defined, admin is used as the author.
This commit is contained in:
Sara Arjona 2022-08-04 13:09:53 +02:00
parent 17ee072693
commit beb305198d
3 changed files with 49 additions and 2 deletions

View File

@ -53,7 +53,7 @@ class behat_mod_data_generator extends behat_generator_base {
'singular' => 'preset',
'datagenerator' => 'preset',
'required' => ['database', 'name'],
'switchids' => ['database' => 'databaseid'],
'switchids' => ['database' => 'databaseid', 'user' => 'userid'],
],
];
}

View File

@ -373,10 +373,19 @@ class mod_data_generator extends testing_module_generator {
* @return preset The preset that has been created.
*/
public function create_preset(stdClass $instance, stdClass $record = null): preset {
global $USER;
if (is_null($record)) {
$record = new stdClass();
}
// Set current user if defined.
if (isset($record->userid) && $record->userid != $USER->id) {
$currentuser = $USER;
$user = \core_user::get_user($record->userid);
$this->set_user($user);
}
// Fill in optional values if not specified.
$presetname = 'New preset ' . microtime();
if (isset($record->name)) {
@ -391,6 +400,10 @@ class mod_data_generator extends testing_module_generator {
$preset = preset::create_from_instance($manager, $presetname, $presetdescription);
$preset->save();
if (isset($currentuser)) {
$this->set_user($currentuser);
}
return $preset;
}
}

View File

@ -249,6 +249,11 @@ class generator_test extends \advanced_testcase {
$course = $this->getDataGenerator()->create_course();
$activity = $this->getDataGenerator()->create_module(manager::MODULE, ['course' => $course]);
$cm = get_coursemodule_from_id(manager::MODULE, $activity->cmid, 0, false, MUST_EXIST);
if (!is_null($record) && property_exists($record, 'user')) {
$user = $this->getDataGenerator()->create_and_enrol($course, 'teacher', (object)['username' => $record->user]);
$record->userid = $user->id;
unset($record->user);
}
// Check initially there are no saved presets.
$manager = manager::create_from_coursemodule($cm);
@ -273,9 +278,14 @@ class generator_test extends \advanced_testcase {
} else {
$this->assertEquals($record->description, $preset->description);
}
// Check the preset author has the expected value.
if (is_null($record) || !property_exists($record, 'userid')) {
$this->assertEquals($USER->id, $preset->get_userid());
} else {
$this->assertEquals($record->userid, $preset->get_userid());
}
// Check the file has been updated properly.
$this->assertNotNull($preset->storedfile);
$this->assertEquals($USER->id, $preset->get_userid());
}
/**
@ -304,6 +314,30 @@ class generator_test extends \advanced_testcase {
'description' => 'This is a preset to collect the most popular world recipes.',
],
],
'Create with a given user but no description or name' => [
'record' => (object) [
'user' => 'teacher1',
],
],
'Create with a given name and user but no description' => [
'record' => (object) [
'name' => 'World recipes preset',
'user' => 'teacher1',
],
],
'Create with a given description and user but no name' => [
'record' => (object) [
'description' => 'This is a preset to collect the most popular world recipes.',
'user' => 'teacher1',
],
],
'Create with a given name, description and user' => [
'record' => (object) [
'name' => 'World recipes preset',
'description' => 'This is a preset to collect the most popular world recipes.',
'user' => 'teacher1',
],
],
];
}
}