From 9a4570deac7198aedcb53be8f340e4578a9dedb0 Mon Sep 17 00:00:00 2001 From: Milton Reder Date: Wed, 20 Nov 2024 15:17:58 -0500 Subject: [PATCH] tool usertours (#63) --- .../events/tool_usertours/tour_ended.php | 63 +++++++++++++++++ src/transformer/get_event_function_map.php | 4 +- tests/tool_usertours/tour_ended/data.json | 1 + tests/tool_usertours/tour_ended/event.json | 9 +++ .../tool_usertours/tour_ended/statements.json | 45 ++++++++++++ .../tour_ended/tour_ended_test.php | 70 +++++++++++++++++++ 6 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 src/transformer/events/tool_usertours/tour_ended.php create mode 100644 tests/tool_usertours/tour_ended/data.json create mode 100644 tests/tool_usertours/tour_ended/event.json create mode 100644 tests/tool_usertours/tour_ended/statements.json create mode 100644 tests/tool_usertours/tour_ended/tour_ended_test.php diff --git a/src/transformer/events/tool_usertours/tour_ended.php b/src/transformer/events/tool_usertours/tour_ended.php new file mode 100644 index 000000000..e66e9b0f9 --- /dev/null +++ b/src/transformer/events/tool_usertours/tour_ended.php @@ -0,0 +1,63 @@ +. + +/** + * Transformer for tour ended event. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\events\tool_usertours; + +use src\transformer\utils as utils; + +/** + * Transformer for tour ended event. + * + * @param array $config The transformer config settings. + * @param \stdClass $event The event to be transformed. + * @return array + */ +function tour_ended(array $config, \stdClass $event) { + $repo = $config['repo']; + $user = $repo->read_record_by_id('user', $event->userid); + $lang = $config['source_lang']; + + return [[ + 'actor' => utils\get_user($config, $user), + 'verb' => [ + 'id' => 'https://xapi.edlm/profiles/edlm-lms/concepts/verbs/toured', + 'display' => [ + 'en' => 'Toured' + ], + ], + 'object' => [ + 'id' => unserialize($event->other)['pageurl'], + 'objectType' => 'Activity', + ], + 'context' => [ + 'language' => $lang, + 'extensions' => utils\extensions\base($config, $event, null), + 'contextActivities' => [ + 'category' => [ + utils\get_activity\site($config), + ], + ], + ], + ]]; +} diff --git a/src/transformer/get_event_function_map.php b/src/transformer/get_event_function_map.php index 255ab310b..258e04faa 100644 --- a/src/transformer/get_event_function_map.php +++ b/src/transformer/get_event_function_map.php @@ -140,8 +140,8 @@ function get_event_function_map() { '\mod_url\event\course_module_viewed' => 'all\course_module_viewed', '\mod_wiki\event\course_module_viewed' => 'all\course_module_viewed', '\mod_workshop\event\course_module_viewed' => 'all\course_module_viewed', - '\totara_program\event\program_assigned' => 'totara_program\program_assigned' - + '\totara_program\event\program_assigned' => 'totara_program\program_assigned', + '\tool_usertours\event\tour_ended' => 'tool_usertours\tour_ended' ]; $environmentevents = class_exists("report_eventlist_list_generator") ? diff --git a/tests/tool_usertours/tour_ended/data.json b/tests/tool_usertours/tour_ended/data.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tests/tool_usertours/tour_ended/data.json @@ -0,0 +1 @@ +{} diff --git a/tests/tool_usertours/tour_ended/event.json b/tests/tool_usertours/tour_ended/event.json new file mode 100644 index 000000000..5ebeb055e --- /dev/null +++ b/tests/tool_usertours/tour_ended/event.json @@ -0,0 +1,9 @@ +{ + "id": 1, + "userid": 1, + "timecreated": 1433946701, + "courseid": 1, + "contextinstanceid": 1, + "eventname": "\\tool_usertours\\event\\tour_ended", + "other": "a:3:{s:7:\"pageurl\";s:42:\"http://localhost:8000/course/view.php?id=1\";s:6:\"stepid\";i:7;s:9:\"stepindex\";i:2;}" +} diff --git a/tests/tool_usertours/tour_ended/statements.json b/tests/tool_usertours/tour_ended/statements.json new file mode 100644 index 000000000..ce8ae50b4 --- /dev/null +++ b/tests/tool_usertours/tour_ended/statements.json @@ -0,0 +1,45 @@ +[ + { + "actor": { + "name": "test_fullname", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, + "verb": { + "id": "https://xapi.edlm/profiles/edlm-lms/concepts/verbs/toured", + "display": { + "en": "Toured" + } + , + "object": { + "id": "http://www.example.org/course/view.php?id=1", + "objectType": "Activity" + }, + "context": { + "language": "en", + "extensions": { + "http://lrs.learninglocker.net/define/extensions/info": { + "http://moodle.org": "1.0.0", + "https://github.com/xAPI-vle/moodle-logstore_xapi": "0.0.0-development", + "event_name": "\\tool_usertours\\event\\tour_ended", + "event_function": "\\src\\transformer\\events\\tool_usertours\\tour_ended" + } + }, + "contextActivities": { + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + } + } + } +] diff --git a/tests/tool_usertours/tour_ended/tour_ended_test.php b/tests/tool_usertours/tour_ended/tour_ended_test.php new file mode 100644 index 000000000..406a916a3 --- /dev/null +++ b/tests/tool_usertours/tour_ended/tour_ended_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\tool_usertours; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for tool_usertours tour_ended event. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class tour_ended_test extends \logstore_xapi\xapi_test_case { + + /** + * Retrieve the directory of the unit test. + * + * @return string + */ + protected function get_test_dir() { + return __DIR__; + } + + /** + * Retrieve the plugin type being tested. + * + * @return string + */ + protected function get_plugin_type() { + return "mod"; + } + + /** + * Retrieve the plugin name being tested. + * + * @return string + */ + protected function get_plugin_name() { + return "tool_usertours"; + } + + /** + * Appease auto-detecting of test cases. xapi_test_case has default test cases. + * + * @covers ::tour_ended + * @return void + */ + public function test_init() { + + } +}