From 81ea48976b23f83bbaf507841c94a9de4ad919be Mon Sep 17 00:00:00 2001 From: Milton Reder Date: Fri, 25 Oct 2024 11:27:58 -0400 Subject: [PATCH] User Enrolment CUD (#35) * amend enrolment created event * add possible instructor to enrolment created * user enrolment deleted * correct table * put in our enrol type extension * user enrolment updated * refactor out context building --- .../events/core/user_enrolment_created.php | 32 ++++---- .../events/core/user_enrolment_deleted.php | 63 ++++++++++++++++ .../events/core/user_enrolment_updated.php | 74 +++++++++++++++++++ src/transformer/get_event_function_map.php | 2 + .../utils/get_enrolment_context.php | 70 ++++++++++++++++++ .../existing_user_enrolled/data.json | 12 ++- .../existing_user_enrolled/event.json | 8 +- .../existing_user_enrolled/statements.json | 29 ++++---- .../existing_user_enrolment_deleted/data.json | 14 ++++ .../event.json | 11 +++ .../existing_user_enrolment_deleted_test.php | 70 ++++++++++++++++++ .../statements.json | 58 +++++++++++++++ .../user_resumed_course/data.json | 20 +++++ .../user_resumed_course/event.json | 11 +++ .../user_resumed_course/statements.json | 58 +++++++++++++++ .../user_resumed_course_test.php | 70 ++++++++++++++++++ .../user_suspended_course/data.json | 20 +++++ .../user_suspended_course/event.json | 11 +++ .../user_suspended_course/statements.json | 58 +++++++++++++++ .../user_suspended_course_test.php | 70 ++++++++++++++++++ 20 files changed, 718 insertions(+), 43 deletions(-) create mode 100644 src/transformer/events/core/user_enrolment_deleted.php create mode 100644 src/transformer/events/core/user_enrolment_updated.php create mode 100644 src/transformer/utils/get_enrolment_context.php create mode 100644 tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/data.json create mode 100644 tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/event.json create mode 100644 tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/existing_user_enrolment_deleted_test.php create mode 100644 tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/statements.json create mode 100644 tests/core/user_enrolment_updated/user_resumed_course/data.json create mode 100644 tests/core/user_enrolment_updated/user_resumed_course/event.json create mode 100644 tests/core/user_enrolment_updated/user_resumed_course/statements.json create mode 100644 tests/core/user_enrolment_updated/user_resumed_course/user_resumed_course_test.php create mode 100644 tests/core/user_enrolment_updated/user_suspended_course/data.json create mode 100644 tests/core/user_enrolment_updated/user_suspended_course/event.json create mode 100644 tests/core/user_enrolment_updated/user_suspended_course/statements.json create mode 100644 tests/core/user_enrolment_updated/user_suspended_course/user_suspended_course_test.php diff --git a/src/transformer/events/core/user_enrolment_created.php b/src/transformer/events/core/user_enrolment_created.php index 97ff3758c..2e5c90381 100644 --- a/src/transformer/events/core/user_enrolment_created.php +++ b/src/transformer/events/core/user_enrolment_created.php @@ -21,6 +21,7 @@ * @copyright Jerret Fowler * Ryan Smith * David Pesce + * Milt Reder * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -37,31 +38,28 @@ */ function user_enrolment_created(array $config, \stdClass $event) { $repo = $config['repo']; - $user = $repo->read_record_by_id('user', $event->relateduserid); + $user = $repo->read_record_by_id('user', $event->userid); + $cuser = $repo->read_record_by_id('user', $event->relateduserid); $course = $repo->read_record_by_id('course', $event->courseid); $lang = utils\get_course_lang($course); - return[[ - 'actor' => utils\get_user($config, $user), + return [[ + 'actor' => utils\get_user($config, $cuser), 'verb' => [ - 'id' => 'http://adlnet.gov/expapi/verbs/registered', + 'id' => 'https://xapi.edlm/profiles/edlm-lms/concepts/verbs/enrolled', 'display' => [ - $lang => 'enrolled to' + $lang => 'Enrolled', ], ], 'object' => utils\get_activity\course($config, $course), - 'context' => [ - 'language' => $lang, - 'extensions' => utils\extensions\base($config, $event, $course), - 'contextActivities' => [ - 'grouping' => [ - utils\get_activity\site($config) - ], - 'category' => [ - utils\get_activity\source($config) - ] - ], - ] + 'context' => utils\get_enrolment_context( + $config, + $event, + $course, + $cuser, + $user, + $lang + ), ]]; } diff --git a/src/transformer/events/core/user_enrolment_deleted.php b/src/transformer/events/core/user_enrolment_deleted.php new file mode 100644 index 000000000..6dd2fc8b5 --- /dev/null +++ b/src/transformer/events/core/user_enrolment_deleted.php @@ -0,0 +1,63 @@ +. + +/** + * Transformer fn for user enrolment deleted event. + * + * @package logstore_xapi + * @copyright Milt Reder + * + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\events\core; + +use src\transformer\utils as utils; + +/** + * Transformer fn for user enrolment deleted event. + * + * @param array $config The transformer config settings. + * @param \stdClass $event The event to be transformed. + * @return array + */ + +function user_enrolment_deleted(array $config, \stdClass $event) { + $repo = $config['repo']; + $user = $repo->read_record_by_id('user', $event->userid); + $cuser = $repo->read_record_by_id('user', $event->relateduserid); + $course = $repo->read_record_by_id('course', $event->courseid); + $lang = utils\get_course_lang($course); + + return [[ + 'actor' => utils\get_user($config, $cuser), + 'verb' => [ + 'id' => 'http://activitystrea.ms/leave', + 'display' => [ + $lang => 'Left', + ], + ], + 'object' => utils\get_activity\course($config, $course), + 'context' => utils\get_enrolment_context( + $config, + $event, + $course, + $cuser, + $user, + $lang + ), + ]]; +} diff --git a/src/transformer/events/core/user_enrolment_updated.php b/src/transformer/events/core/user_enrolment_updated.php new file mode 100644 index 000000000..c47ff0800 --- /dev/null +++ b/src/transformer/events/core/user_enrolment_updated.php @@ -0,0 +1,74 @@ +. + +/** + * Transform for user enrolment updated event. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\events\core; + +use src\transformer\utils as utils; + +/** + * Transformer for the user enrolment updated event. + * + * @param array $config The transformer config settings. + * @param \stdClass $event The event to be transformed. + * @return array + */ +function user_enrolment_updated(array $config, \stdClass $event) { + $repo = $config['repo']; + $enrolment = $repo->read_record_by_id('user_enrolments', $event->objectid); + $user = $repo->read_record_by_id('user', $event->userid); + $cuser = $repo->read_record_by_id('user', $event->relateduserid); + $course = $repo->read_record_by_id('course', $event->courseid); + $lang = utils\get_course_lang($course); + + if ($enrolment->status == 1) { + $verb = [ + 'id' => 'https://w3id.org/xapi/tla/verbs/suspended', + 'display' => [ + $lang => 'Suspended', + ], + ]; + } else { + $verb = [ + 'id' => 'https://w3id.org/xapi/tla/verbs/resumed', + 'display' => [ + $lang => 'Resumed', + ], + ]; + } + + return [[ + 'actor' => utils\get_user($config, $cuser), + 'verb' => $verb, + 'object' => utils\get_activity\course($config, $course), + 'context' => utils\get_enrolment_context( + $config, + $event, + $course, + $cuser, + $user, + $lang + ), + ]]; + +} diff --git a/src/transformer/get_event_function_map.php b/src/transformer/get_event_function_map.php index 92db2c760..63ac4709d 100644 --- a/src/transformer/get_event_function_map.php +++ b/src/transformer/get_event_function_map.php @@ -53,6 +53,8 @@ function get_event_function_map() { '\core\event\group_member_removed' => 'core\group_member_removed', '\core\event\user_created' => 'core\user_created', '\core\event\user_enrolment_created' => 'core\user_enrolment_created', + '\core\event\user_enrolment_deleted' => 'core\user_enrolment_deleted', + '\core\event\user_enrolment_updated' => 'core\user_enrolment_updated', '\core\event\user_loggedin' => 'core\user_loggedin', '\core\event\user_loggedout' => 'core\user_loggedout', '\core\event\course_module_created' => 'core\course_module_created', diff --git a/src/transformer/utils/get_enrolment_context.php b/src/transformer/utils/get_enrolment_context.php new file mode 100644 index 000000000..f5007003b --- /dev/null +++ b/src/transformer/utils/get_enrolment_context.php @@ -0,0 +1,70 @@ +. + +/** + * Transformer utility for retrieving enrolment context object. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\utils; + +use src\transformer\utils as utils; + +/** + * Return a context object for a user enrolment. + * @param array $config The transformer config array. + * @param \stdClass $event The moodle event. + * @param \stdClass $course The moodle course. + * @param \stdClass $cuser The user attending the course. + * @param \stdClass $user The user triggering the event. + * @param string $lang The language to use. + * @return array + */ +function get_enrolment_context( + array $config, + \stdClass $event, + \stdClass $course, + \stdClass $cuser, + \stdClass $user, + string $lang +) { + $info = unserialize($event->other); + + $ctx = [ + 'language' => $lang, + 'extensions' => array_merge( + utils\extensions\base($config, $event, $course), + [ + 'https://xapi.edlm/profiles/edlm-lms/concepts/context-extensions/enrolment-type' => + $info['enrol'] + ] + ), + 'contextActivities' => [ + 'category' => [ + utils\get_activity\site($config), + ], + ], + ]; + + // add a possible instructor different from course user + if ($cuser->id !== $user->id) { + $ctx['instructor'] = utils\get_user($config, $user); + } + return $ctx; +} diff --git a/tests/core/user_enrolment_created/existing_user_enrolled/data.json b/tests/core/user_enrolment_created/existing_user_enrolled/data.json index 614658e31..65f4262d0 100644 --- a/tests/core/user_enrolment_created/existing_user_enrolled/data.json +++ b/tests/core/user_enrolment_created/existing_user_enrolled/data.json @@ -2,15 +2,13 @@ "user": [ { "id": 1, - "firstname": "test_fullname", + "firstname": "test_fullname1", "email": "test@test.com" - } - ], - "course": [ + }, { - "id": 1, - "fullname": "test_name", - "lang": "en" + "id": 2, + "firstname": "test_fullname2", + "email": "test@test.com" } ] } diff --git a/tests/core/user_enrolment_created/existing_user_enrolled/event.json b/tests/core/user_enrolment_created/existing_user_enrolled/event.json index 4a93d9e9d..f0e9e8ea4 100644 --- a/tests/core/user_enrolment_created/existing_user_enrolled/event.json +++ b/tests/core/user_enrolment_created/existing_user_enrolled/event.json @@ -1,9 +1,11 @@ { "id": 1, - "relateduserid": 1, + "userid": 1, + "relateduserid": 2, "courseid": 1, "timecreated": 1433946701, - "objecttable": "user", + "objecttable": "user_enrolments", "objectid": 1, - "eventname": "\\core\\event\\user_enrolment_created" + "eventname": "\\core\\event\\user_enrolment_created", + "other": "a:1:{s:5:\"enrol\";s:6:\"manual\";}" } diff --git a/tests/core/user_enrolment_created/existing_user_enrolled/statements.json b/tests/core/user_enrolment_created/existing_user_enrolled/statements.json index ebe395e5c..0485311b3 100644 --- a/tests/core/user_enrolment_created/existing_user_enrolled/statements.json +++ b/tests/core/user_enrolment_created/existing_user_enrolled/statements.json @@ -1,16 +1,16 @@ [ { "actor": { - "name": "test_fullname", + "name": "test_fullname2", "account": { "homePage": "http://www.example.org", - "name": "1" + "name": "2" } }, "verb": { - "id": "http://adlnet.gov/expapi/verbs/registered", + "id": "https://xapi.edlm/profiles/edlm-lms/concepts/verbs/enrolled", "display": { - "en": "enrolled to" + "en": "Enrolled" } }, "object": { @@ -23,8 +23,16 @@ } }, "context": { + "instructor": { + "name": "test_fullname1", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, "language": "en", "extensions": { + "https://xapi.edlm/profiles/edlm-lms/concepts/context-extensions/enrolment-type": "manual", "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", @@ -33,7 +41,7 @@ } }, "contextActivities": { - "grouping": [ + "category": [ { "id": "http://www.example.org", "definition": { @@ -43,17 +51,6 @@ } } } - ], - "category": [ - { - "id": "http://moodle.org", - "definition": { - "type": "http://id.tincanapi.com/activitytype/source", - "name": { - "en": "Moodle" - } - } - } ] } } diff --git a/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/data.json b/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/data.json new file mode 100644 index 000000000..65f4262d0 --- /dev/null +++ b/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/data.json @@ -0,0 +1,14 @@ +{ + "user": [ + { + "id": 1, + "firstname": "test_fullname1", + "email": "test@test.com" + }, + { + "id": 2, + "firstname": "test_fullname2", + "email": "test@test.com" + } + ] +} diff --git a/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/event.json b/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/event.json new file mode 100644 index 000000000..6b4d92275 --- /dev/null +++ b/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/event.json @@ -0,0 +1,11 @@ +{ + "courseid": 1, + "eventname": "\\core\\event\\user_enrolment_deleted", + "id": 1, + "objectid": 1, + "objecttable": "user_enrolments", + "timecreated": 1433946701, + "userid": 1, + "relateduserid": 2, + "other": "a:1:{s:5:\"enrol\";s:6:\"manual\";}" +} diff --git a/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/existing_user_enrolment_deleted_test.php b/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/existing_user_enrolment_deleted_test.php new file mode 100644 index 000000000..b00b9c7b8 --- /dev/null +++ b/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/existing_user_enrolment_deleted_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\core\user_enrolment_deleted\existing_user_enrolment_deleted; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for user_enrolment_deleted event + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class existing_user_enrolment_deleted_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 "core"; + } + + /** + * Retrieve the plugin name being tested. + * + * @return string + */ + protected function get_plugin_name() { + return "core"; + } + + /** + * Appease auto-detecting of test cases. xapi_test_case has default test cases. + * + * @covers ::attempt_submitted + * @return void + */ + public function test_init() { + + } +} diff --git a/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/statements.json b/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/statements.json new file mode 100644 index 000000000..e35c6f5d8 --- /dev/null +++ b/tests/core/user_enrolment_deleted/existing_user_enrolment_deleted/statements.json @@ -0,0 +1,58 @@ +[ + { + "actor": { + "name": "test_fullname2", + "account": { + "homePage": "http://www.example.org", + "name": "2" + } + }, + "verb": { + "id": "http://activitystrea.ms/leave", + "display": { + "en": "Left" + } + }, + "object": { + "id": "http://www.example.org/course/view.php?id=1", + "definition": { + "type": "https://w3id.org/xapi/cmi5/activitytype/course", + "name": { + "en": "test_name" + } + } + }, + "context": { + "instructor": { + "name": "test_fullname1", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, + "language": "en", + "extensions": { + "https://xapi.edlm/profiles/edlm-lms/concepts/context-extensions/enrolment-type": "manual", + "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": "\\core\\event\\user_enrolment_deleted", + "event_function": "\\src\\transformer\\events\\core\\user_enrolment_deleted" + } + }, + "contextActivities": { + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + } + } + } +] diff --git a/tests/core/user_enrolment_updated/user_resumed_course/data.json b/tests/core/user_enrolment_updated/user_resumed_course/data.json new file mode 100644 index 000000000..487c142dc --- /dev/null +++ b/tests/core/user_enrolment_updated/user_resumed_course/data.json @@ -0,0 +1,20 @@ +{ + "user": [ + { + "id": 1, + "firstname": "test_fullname1", + "email": "test@test.com" + }, + { + "id": 2, + "firstname": "test_fullname2", + "email": "test@test.com" + } + ], + "user_enrolments": [ + { + "id": 1, + "status": 0 + } + ] +} diff --git a/tests/core/user_enrolment_updated/user_resumed_course/event.json b/tests/core/user_enrolment_updated/user_resumed_course/event.json new file mode 100644 index 000000000..710673801 --- /dev/null +++ b/tests/core/user_enrolment_updated/user_resumed_course/event.json @@ -0,0 +1,11 @@ +{ + "id": 1, + "userid": 1, + "relateduserid": 2, + "courseid": 1, + "timecreated": 1433946701, + "objecttable": "user_enrolments", + "objectid": 1, + "eventname": "\\core\\event\\user_enrolment_updated", + "other": "a:1:{s:5:\"enrol\";s:6:\"manual\";}" +} diff --git a/tests/core/user_enrolment_updated/user_resumed_course/statements.json b/tests/core/user_enrolment_updated/user_resumed_course/statements.json new file mode 100644 index 000000000..cd49f34ed --- /dev/null +++ b/tests/core/user_enrolment_updated/user_resumed_course/statements.json @@ -0,0 +1,58 @@ +[ + { + "actor": { + "name": "test_fullname2", + "account": { + "homePage": "http://www.example.org", + "name": "2" + } + }, + "verb": { + "id": "https://w3id.org/xapi/tla/verbs/resumed", + "display": { + "en": "Resumed" + } + }, + "object": { + "id": "http://www.example.org/course/view.php?id=1", + "definition": { + "type": "https://w3id.org/xapi/cmi5/activitytype/course", + "name": { + "en": "test_name" + } + } + }, + "context": { + "instructor": { + "name": "test_fullname1", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, + "language": "en", + "extensions": { + "https://xapi.edlm/profiles/edlm-lms/concepts/context-extensions/enrolment-type": "manual", + "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": "\\core\\event\\user_enrolment_updated", + "event_function": "\\src\\transformer\\events\\core\\user_enrolment_updated" + } + }, + "contextActivities": { + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + } + } + } +] diff --git a/tests/core/user_enrolment_updated/user_resumed_course/user_resumed_course_test.php b/tests/core/user_enrolment_updated/user_resumed_course/user_resumed_course_test.php new file mode 100644 index 000000000..7a59bac50 --- /dev/null +++ b/tests/core/user_enrolment_updated/user_resumed_course/user_resumed_course_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\core\user_enrolment_updated\user_resumed_course; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for user enrolment updated event. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class user_resumed_course_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 "core"; + } + + /** + * Retrieve the plugin name being tested. + * + * @return string + */ + protected function get_plugin_name() { + return "user"; + } + + /** + * Appease auto-detecting of test cases. xapi_test_case has default test cases. + * + * @covers ::user_enrolment_created + * @return void + */ + public function test_init() { + + } +} diff --git a/tests/core/user_enrolment_updated/user_suspended_course/data.json b/tests/core/user_enrolment_updated/user_suspended_course/data.json new file mode 100644 index 000000000..aa1811f1f --- /dev/null +++ b/tests/core/user_enrolment_updated/user_suspended_course/data.json @@ -0,0 +1,20 @@ +{ + "user": [ + { + "id": 1, + "firstname": "test_fullname1", + "email": "test@test.com" + }, + { + "id": 2, + "firstname": "test_fullname2", + "email": "test@test.com" + } + ], + "user_enrolments": [ + { + "id": 1, + "status": 1 + } + ] +} diff --git a/tests/core/user_enrolment_updated/user_suspended_course/event.json b/tests/core/user_enrolment_updated/user_suspended_course/event.json new file mode 100644 index 000000000..710673801 --- /dev/null +++ b/tests/core/user_enrolment_updated/user_suspended_course/event.json @@ -0,0 +1,11 @@ +{ + "id": 1, + "userid": 1, + "relateduserid": 2, + "courseid": 1, + "timecreated": 1433946701, + "objecttable": "user_enrolments", + "objectid": 1, + "eventname": "\\core\\event\\user_enrolment_updated", + "other": "a:1:{s:5:\"enrol\";s:6:\"manual\";}" +} diff --git a/tests/core/user_enrolment_updated/user_suspended_course/statements.json b/tests/core/user_enrolment_updated/user_suspended_course/statements.json new file mode 100644 index 000000000..8fb039379 --- /dev/null +++ b/tests/core/user_enrolment_updated/user_suspended_course/statements.json @@ -0,0 +1,58 @@ +[ + { + "actor": { + "name": "test_fullname2", + "account": { + "homePage": "http://www.example.org", + "name": "2" + } + }, + "verb": { + "id": "https://w3id.org/xapi/tla/verbs/suspended", + "display": { + "en": "Suspended" + } + }, + "object": { + "id": "http://www.example.org/course/view.php?id=1", + "definition": { + "type": "https://w3id.org/xapi/cmi5/activitytype/course", + "name": { + "en": "test_name" + } + } + }, + "context": { + "instructor": { + "name": "test_fullname1", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, + "language": "en", + "extensions": { + "https://xapi.edlm/profiles/edlm-lms/concepts/context-extensions/enrolment-type": "manual", + "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": "\\core\\event\\user_enrolment_updated", + "event_function": "\\src\\transformer\\events\\core\\user_enrolment_updated" + } + }, + "contextActivities": { + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + } + } + } +] diff --git a/tests/core/user_enrolment_updated/user_suspended_course/user_suspended_course_test.php b/tests/core/user_enrolment_updated/user_suspended_course/user_suspended_course_test.php new file mode 100644 index 000000000..8f9c2ed8f --- /dev/null +++ b/tests/core/user_enrolment_updated/user_suspended_course/user_suspended_course_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\core\user_enrolment_updated\user_suspended_course; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for user enrolment updated event. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class user_suspended_course_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 "core"; + } + + /** + * Retrieve the plugin name being tested. + * + * @return string + */ + protected function get_plugin_name() { + return "user"; + } + + /** + * Appease auto-detecting of test cases. xapi_test_case has default test cases. + * + * @covers ::user_enrolment_created + * @return void + */ + public function test_init() { + + } +}