diff --git a/lib/testing/generator/data_generator.php b/lib/testing/generator/data_generator.php index 5b0bc694482..e3d42a83531 100644 --- a/lib/testing/generator/data_generator.php +++ b/lib/testing/generator/data_generator.php @@ -1103,4 +1103,59 @@ EOD; // Get the tool associated with this instance. return $DB->get_record('enrol_lti_tools', array('enrolid' => $instanceid)); } + + /** + * Helper function used to create an event. + * + * @param array $data + * @return stdClass + */ + public function create_event($data = []) { + global $CFG; + + require_once($CFG->dirroot . '/calendar/lib.php'); + $record = new \stdClass(); + $record->name = 'event name'; + $record->eventtype = 'global'; + $record->repeat = 0; + $record->repeats = 0; + $record->timestart = time(); + $record->timeduration = 0; + $record->timesort = 0; + $record->eventtype = 'user'; + $record->courseid = 0; + + foreach ($data as $key => $value) { + $record->$key = $value; + } + + switch ($record->eventtype) { + case 'user': + unset($record->categoryid); + unset($record->courseid); + unset($record->groupid); + break; + case 'group': + unset($record->categoryid); + break; + case 'course': + unset($record->categoryid); + unset($record->groupid); + break; + case 'category': + unset($record->courseid); + unset($record->groupid); + break; + case 'global': + unset($record->categoryid); + unset($record->courseid); + unset($record->groupid); + break; + } + + $event = new calendar_event($record); + $event->create($record); + + return $event->properties(); + } } diff --git a/lib/tests/behat/behat_data_generators.php b/lib/tests/behat/behat_data_generators.php index b54e3d6ae6a..d0bdb8eee7c 100644 --- a/lib/tests/behat/behat_data_generators.php +++ b/lib/tests/behat/behat_data_generators.php @@ -174,6 +174,15 @@ class behat_data_generators extends behat_base { 'datagenerator' => 'tag', 'required' => array('name') ), + 'events' => array( + 'datagenerator' => 'event', + 'required' => array('name', 'eventtype'), + 'switchids' => array( + 'user' => 'userid', + 'course' => 'courseid', + 'category' => 'categoryid', + ) + ), ); /**