diff --git a/mod/data/tests/generator/behat_mod_data_generator.php b/mod/data/tests/generator/behat_mod_data_generator.php index 8f39d2d02c5..121570094fc 100644 --- a/mod/data/tests/generator/behat_mod_data_generator.php +++ b/mod/data/tests/generator/behat_mod_data_generator.php @@ -35,7 +35,7 @@ class behat_mod_data_generator extends behat_generator_base { 'singular' => 'entry', 'datagenerator' => 'entry', 'required' => ['database'], - 'switchids' => ['database' => 'databaseid'], + 'switchids' => ['database' => 'databaseid', 'user' => 'userid'], ], 'fields' => [ 'singular' => 'field', @@ -81,6 +81,11 @@ class behat_mod_data_generator extends behat_generator_base { $database = $DB->get_record('data', ['id' => $data['databaseid']], '*', MUST_EXIST); unset($data['databaseid']); + $userid = 0; + if (array_key_exists('userid', $data)) { + $userid = $data['userid']; + unset($data['userid']); + } $data = array_reduce(array_keys($data), function ($fields, $fieldname) use ($data, $database) { global $DB; @@ -92,7 +97,7 @@ class behat_mod_data_generator extends behat_generator_base { return $fields; }, []); - $this->get_data_generator()->create_entry($database, $data); + $this->get_data_generator()->create_entry($database, $data, 0, [], null, $userid); } /** diff --git a/mod/data/tests/generator/lib.php b/mod/data/tests/generator/lib.php index a1497e9faa7..2e31f41485e 100644 --- a/mod/data/tests/generator/lib.php +++ b/mod/data/tests/generator/lib.php @@ -208,11 +208,19 @@ class mod_data_generator extends testing_module_generator { * @param int $groupid * @param array $tags * @param array $options + * @param int $userid if defined, it will be the author of the entry * @return int id of the generated record in table {data_records} */ - public function create_entry($data, array $contents, $groupid = 0, $tags = [], array $options = null) { + public function create_entry($data, array $contents, $groupid = 0, $tags = [], array $options = null, int $userid = 0) { global $DB, $USER, $CFG; + // Set current user if defined. + if (!empty($userid)) { + $currentuser = $USER; + $user = \core_user::get_user($userid); + $this->set_user($user); + } + $this->databaserecordcount++; $recordid = data_add_record($data, $groupid); @@ -362,6 +370,10 @@ class mod_data_generator extends testing_module_generator { context_module::instance($cm->id), $tags); } + if (isset($currentuser)) { + $this->set_user($currentuser); + } + return $recordid; }