diff --git a/src/transformer/events/mod_wiki/comment_created.php b/src/transformer/events/mod_wiki/comment_created.php new file mode 100644 index 000000000..d8f4d0136 --- /dev/null +++ b/src/transformer/events/mod_wiki/comment_created.php @@ -0,0 +1,82 @@ +. + +/** + * Transformer fn for wiki discussion comment created event. + * + * @package logstore_xapi + * @copyright Milt Reder + * + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\events\mod_wiki; + +use src\transformer\utils as utils; + +/** + * Transformer fn for wiki discussion comment created event. + * + * @param array $config The transformer config settings. + * @param \stdClass $event The event to be transformed. + * @return array + */ + +function comment_created(array $config, \stdClass $event) { + $repo = $config['repo']; + $user = $repo->read_record_by_id('user', $event->userid); + $course = $repo->read_record_by_id('course', $event->courseid); + $comment = $repo->read_record_by_id('comments', $event->objectid); + $wikipage = $repo->read_record_by_id('wiki_pages', $comment->itemid); + $lang = utils\get_course_lang($course); + + return[[ + 'actor' => utils\get_user($config, $user), + 'verb' => [ + 'id' => 'http://adlnet.gov/expapi/verbs/commented', + 'display' => [ + 'en' => 'Commented' + ], + ], + 'object' => utils\get_activity\wiki_discussion( + $config, $course, $wikipage + ), + 'result' => [ + 'response' => utils\get_string_html_removed($comment->content), + ], + 'context' => [ + 'language' => $lang, + 'extensions' => utils\extensions\base($config, $event, $course), + 'contextActivities' => [ + 'parent' => [ + utils\get_activity\wiki_page( + $config, + $course, + $wikipage + ), + ...utils\context_activities\get_parent( + $config, + $event->contextinstanceid, + true + ), + ], + 'category' => [ + utils\get_activity\site($config), + ], + ], + ] + ]]; +} diff --git a/src/transformer/events/mod_wiki/comment_deleted.php b/src/transformer/events/mod_wiki/comment_deleted.php new file mode 100644 index 000000000..7778ba8b8 --- /dev/null +++ b/src/transformer/events/mod_wiki/comment_deleted.php @@ -0,0 +1,95 @@ +. + +/** + * Transformer fn for wiki discussion comment 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\mod_wiki; + +use src\transformer\utils as utils; + +/** + * Transformer fn for wiki discussion comment deleted event. + * + * @param array $config The transformer config settings. + * @param \stdClass $event The event to be transformed. + * @return array + */ + +function comment_deleted(array $config, \stdClass $event) { + $repo = $config['repo']; + $user = $repo->read_record_by_id('user', $event->userid); + $course = $repo->read_record_by_id('course', $event->courseid); + $wikipage = $repo->read_record_by_id( + 'wiki_pages', + (int) unserialize($event->other)['itemid'] + ); + $lang = utils\get_course_lang($course); + + return[[ + 'actor' => utils\get_user($config, $user), + 'verb' => [ + 'id' => 'http://activitystrea.ms/delete', + 'display' => [ + 'en' => 'Deleted' + ], + ], + 'object' => [ + 'id' => $config['app_url'] + . '/mod/wiki/instancecomments.php?commentid=' . $event->objectid + . '&pageid=' . $wikipage->id, + 'objectType' => 'Activity', + 'definition' => [ + 'type' => 'http://activitystrea.ms/comment', + 'name' => [ + 'en' => 'Comment', + ], + ], + ], + 'context' => [ + 'language' => $lang, + 'extensions' => utils\extensions\base($config, $event, $course), + 'contextActivities' => [ + 'parent' => [ + utils\get_activity\wiki_discussion( + $config, + $course, + $wikipage + ), + utils\get_activity\wiki_page( + $config, + $course, + $wikipage + ), + ...utils\context_activities\get_parent( + $config, + $event->contextinstanceid, + true + ), + ], + 'category' => [ + utils\get_activity\site($config), + ], + ], + ] + ]]; +} diff --git a/src/transformer/events/mod_wiki/comments_viewed.php b/src/transformer/events/mod_wiki/comments_viewed.php new file mode 100644 index 000000000..fbc10e597 --- /dev/null +++ b/src/transformer/events/mod_wiki/comments_viewed.php @@ -0,0 +1,78 @@ +. + +/** + * Transformer fn for wiki discussion comments viewed event. + * + * @package logstore_xapi + * @copyright Milt Reder + * + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\events\mod_wiki; + +use src\transformer\utils as utils; + +/** + * Transformer fn for wiki discussion comments viewed event. + * + * @param array $config The transformer config settings. + * @param \stdClass $event The event to be transformed. + * @return array + */ + +function comments_viewed(array $config, \stdClass $event) { + $repo = $config['repo']; + $user = $repo->read_record_by_id('user', $event->userid); + $course = $repo->read_record_by_id('course', $event->courseid); + $wikipage = $repo->read_record_by_id('wiki_pages', $event->objectid); + $lang = utils\get_course_lang($course); + + return[[ + 'actor' => utils\get_user($config, $user), + 'verb' => [ + 'id' => 'http://id.tincanapi.com/verb/viewed', + 'display' => [ + 'en' => 'Viewed' + ], + ], + 'object' => utils\get_activity\wiki_discussion( + $config, $course, $wikipage + ), + 'context' => [ + 'language' => $lang, + 'extensions' => utils\extensions\base($config, $event, $course), + 'contextActivities' => [ + 'parent' => [ + utils\get_activity\wiki_page( + $config, + $course, + $wikipage + ), + ...utils\context_activities\get_parent( + $config, + $event->contextinstanceid, + true + ), + ], + 'category' => [ + utils\get_activity\site($config), + ], + ], + ] + ]]; +} diff --git a/src/transformer/events/mod_wiki/page_viewed.php b/src/transformer/events/mod_wiki/page_viewed.php new file mode 100644 index 000000000..245ea6afb --- /dev/null +++ b/src/transformer/events/mod_wiki/page_viewed.php @@ -0,0 +1,73 @@ +. + +/** + * Transformer fn for wiki page viewed event. + * + * @package logstore_xapi + * @copyright Milt Reder + * + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\events\mod_wiki; + +use src\transformer\utils as utils; + +/** + * Transformer fn for wiki page viewed event. + * + * @param array $config The transformer config settings. + * @param \stdClass $event The event to be transformed. + * @return array + */ + +function page_viewed(array $config, \stdClass $event) { + $repo = $config['repo']; + $user = $repo->read_record_by_id('user', $event->userid); + $course = $repo->read_record_by_id('course', $event->courseid); + $wikipage = $repo->read_record_by_id('wiki_pages', $event->objectid); + $lang = utils\get_course_lang($course); + + return[[ + 'actor' => utils\get_user($config, $user), + 'verb' => [ + 'id' => 'http://id.tincanapi.com/verb/viewed', + 'display' => [ + 'en' => 'Viewed' + ], + ], + 'object' => utils\get_activity\wiki_page( + $config, + $course, + $wikipage + ), + 'context' => [ + 'language' => $lang, + 'extensions' => utils\extensions\base($config, $event, $course), + 'contextActivities' => [ + 'parent' => utils\context_activities\get_parent( + $config, + $event->contextinstanceid, + true + ), + '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..ee932c8d2 100644 --- a/src/transformer/get_event_function_map.php +++ b/src/transformer/get_event_function_map.php @@ -139,6 +139,10 @@ function get_event_function_map() { '\mod_survey\event\response_submitted' => 'mod_survey\response_submitted', '\mod_url\event\course_module_viewed' => 'all\course_module_viewed', '\mod_wiki\event\course_module_viewed' => 'all\course_module_viewed', + '\mod_wiki\event\comment_created' => 'mod_wiki\comment_created', + '\mod_wiki\event\comment_deleted' => 'mod_wiki\comment_deleted', + '\mod_wiki\event\comments_viewed' => 'mod_wiki\comments_viewed', + '\mod_wiki\event\page_viewed' => 'mod_wiki\page_viewed', '\mod_workshop\event\course_module_viewed' => 'all\course_module_viewed', '\totara_program\event\program_assigned' => 'totara_program\program_assigned' diff --git a/src/transformer/utils/get_activity/course_module.php b/src/transformer/utils/get_activity/course_module.php index 0fb077079..1378fb9bb 100644 --- a/src/transformer/utils/get_activity/course_module.php +++ b/src/transformer/utils/get_activity/course_module.php @@ -69,8 +69,8 @@ function course_module(array $config, \stdClass $course, int $cmid) { ); } - // Survey - if ($module->name === 'survey') { + // Survey & Wiki use "intro" + if ($module->name === 'survey' || $module->name === 'wiki') { $def = [ 'type' => $activitytype, 'name' => [ diff --git a/src/transformer/utils/get_activity/wiki_discussion.php b/src/transformer/utils/get_activity/wiki_discussion.php new file mode 100644 index 000000000..9c3ecd9cf --- /dev/null +++ b/src/transformer/utils/get_activity/wiki_discussion.php @@ -0,0 +1,53 @@ +. + +/** + * Transformer utility for retrieving wiki discussion activity objects. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\utils\get_activity; + +use src\transformer\utils as utils; + +/** + * Transformer utility for retrieving wiki discussion activity objects. + * + * @param array $config The transformer config settings. + * @param \stdClass $course The course object. + * @param \stdClass $wikipage The wiki page object. + * @return array + */ +function wiki_discussion( + array $config, + \stdClass $course, + \stdClass $wikipage +) { + $lang = utils\get_course_lang($course); + + return [ + 'id' => $config['app_url'] . '/mod/wiki/comments.php?pageid=' . $wikipage->id, + 'definition' => [ + 'type' => 'http://id.tincanapi.com/activitytype/discussion', + 'name' => [ + $lang => $wikipage->title . ' Discussion', + ], + ], + ]; +} diff --git a/src/transformer/utils/get_activity/wiki_page.php b/src/transformer/utils/get_activity/wiki_page.php new file mode 100644 index 000000000..55f1491b5 --- /dev/null +++ b/src/transformer/utils/get_activity/wiki_page.php @@ -0,0 +1,56 @@ +. + +/** + * Transformer utility for retrieving wiki page activity objects. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace src\transformer\utils\get_activity; + +use src\transformer\utils as utils; + +/** + * Transformer utility for retrieving wiki page activity objects. + * + * @param array $config The transformer config settings. + * @param \stdClass $course The course object. + * @param \stdClass $wikipage The wiki page object. + * @return array + */ +function wiki_page( + array $config, + \stdClass $course, + \stdClass $wikipage +) { + $lang = utils\get_course_lang($course); + + return [ + 'id' => $config['app_url'] . '/mod/wiki/view.php?pageid=' . $wikipage->id, + 'definition' => [ + 'type' => 'https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki-page', + 'name' => [ + $lang => $wikipage->title, + ], + 'description' => [ + $lang => utils\get_string_html_removed($wikipage->cachedcontent), + ] + ], + ]; +} diff --git a/tests/mod_wiki/comment_created/comment_created_test.php b/tests/mod_wiki/comment_created/comment_created_test.php new file mode 100644 index 000000000..47cc853c6 --- /dev/null +++ b/tests/mod_wiki/comment_created/comment_created_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\mod_wiki; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for wiki comment created. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class comment_created_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 "mod_survey"; + } + + /** + * Appease auto-detecting of test cases. xapi_test_case has default test cases. + * + * @covers ::comment_created + * @return void + */ + public function test_init() { + + } +} diff --git a/tests/mod_wiki/comment_created/data.json b/tests/mod_wiki/comment_created/data.json new file mode 100644 index 000000000..3a53fc490 --- /dev/null +++ b/tests/mod_wiki/comment_created/data.json @@ -0,0 +1,36 @@ +{ + "modules": [ + { + "id": 1, + "name": "wiki" + } + ], + "wiki": [ + { + "id": 1, + "name": "test_name", + "intro": "

test_intro

" + } + ], + "wiki_subwikis": [ + { + "id": 1, + "wikiid": 1 + } + ], + "wiki_pages": [ + { + "id": 1, + "subwikiid": 1, + "title": "test_page_title", + "cachedcontent": "

test_content

" + } + ], + "comments": [ + { + "id": 1, + "content": "

test_content

", + "itemid": 1 + } + ] +} diff --git a/tests/mod_wiki/comment_created/event.json b/tests/mod_wiki/comment_created/event.json new file mode 100644 index 000000000..4dc8129a5 --- /dev/null +++ b/tests/mod_wiki/comment_created/event.json @@ -0,0 +1,10 @@ +{ + "id": 1, + "userid": 1, + "courseid": 1, + "timecreated": 1433946701, + "contextinstanceid": 1, + "eventname": "\\mod_wiki\\event\\comment_created", + "objectid": 1, + "objecttable": "comments" +} diff --git a/tests/mod_wiki/comment_created/statements.json b/tests/mod_wiki/comment_created/statements.json new file mode 100644 index 000000000..949496e32 --- /dev/null +++ b/tests/mod_wiki/comment_created/statements.json @@ -0,0 +1,98 @@ +[ + { + "actor": { + "name": "test_fullname", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, + "verb": { + "id": "http://adlnet.gov/expapi/verbs/commented", + "display": { + "en": "Commented" + } + }, + "object": { + "id": "http://www.example.org/mod/wiki/comments.php?pageid=1", + "definition": { + "type": "http://id.tincanapi.com/activitytype/discussion", + "name": { + "en": "test_page_title Discussion" + } + } + }, + "result": { + "response": "test_content" + }, + "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": "\\mod_wiki\\event\\comment_created", + "event_function": "\\src\\transformer\\events\\mod_wiki\\comment_created" + } + }, + "contextActivities": { + "parent": [ + { + "id": "http://www.example.org/mod/wiki/view.php?pageid=1", + "definition": { + "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki-page", + "name": { + "en": "test_page_title" + }, + "description": { + "en": "test_content" + } + } + }, + { + "id": "http://www.example.org/mod/wiki/view.php?id=1", + "definition": { + "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki", + "name": { + "en": "test_name" + }, + "description": { + "en": "test_intro" + } + } + }, + { + "id": "http://www.example.org/course/section.php?id=1", + "objectType": "Activity", + "definition": { + "name": { + "en": "test_name Section 0" + }, + "type": "http://id.tincanapi.com/activitytype/section" + } + }, + { + "id": "http://www.example.org/course/view.php?id=1", + "definition": { + "type": "https://w3id.org/xapi/cmi5/activitytype/course", + "name": { + "en": "test_name" + } + } + } + ], + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + } + } + } +] diff --git a/tests/mod_wiki/comment_deleted/comment_deleted_test.php b/tests/mod_wiki/comment_deleted/comment_deleted_test.php new file mode 100644 index 000000000..708c070b8 --- /dev/null +++ b/tests/mod_wiki/comment_deleted/comment_deleted_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\mod_wiki; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for wiki comment deleted. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class comment_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 "mod_survey"; + } + + /** + * Appease auto-detecting of test cases. xapi_test_case has default test cases. + * + * @covers ::comment_deleted + * @return void + */ + public function test_init() { + + } +} diff --git a/tests/mod_wiki/comment_deleted/data.json b/tests/mod_wiki/comment_deleted/data.json new file mode 100644 index 000000000..8b4744ede --- /dev/null +++ b/tests/mod_wiki/comment_deleted/data.json @@ -0,0 +1,29 @@ +{ + "modules": [ + { + "id": 1, + "name": "wiki" + } + ], + "wiki": [ + { + "id": 1, + "name": "test_name", + "intro": "

test_intro

" + } + ], + "wiki_subwikis": [ + { + "id": 1, + "wikiid": 1 + } + ], + "wiki_pages": [ + { + "id": 1, + "subwikiid": 1, + "title": "test_page_title", + "cachedcontent": "

test_content

" + } + ] +} diff --git a/tests/mod_wiki/comment_deleted/event.json b/tests/mod_wiki/comment_deleted/event.json new file mode 100644 index 000000000..472af2f3b --- /dev/null +++ b/tests/mod_wiki/comment_deleted/event.json @@ -0,0 +1,11 @@ +{ + "id": 1, + "userid": 1, + "courseid": 1, + "timecreated": 1433946701, + "contextinstanceid": 1, + "eventname": "\\mod_wiki\\event\\comment_deleted", + "objectid": 1, + "objecttable": "comments", + "other": "a:1:{s:6:\"itemid\";s:1:\"1\";}" +} diff --git a/tests/mod_wiki/comment_deleted/statements.json b/tests/mod_wiki/comment_deleted/statements.json new file mode 100644 index 000000000..d47d91bc6 --- /dev/null +++ b/tests/mod_wiki/comment_deleted/statements.json @@ -0,0 +1,105 @@ +[ + { + "actor": { + "name": "test_fullname", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, + "verb": { + "id": "http://activitystrea.ms/delete", + "display": { + "en": "Deleted" + } + }, + "object": { + "id": "http://www.example.org/mod/wiki/instancecomments.php?commentid=1&pageid=1", + "objectType": "Activity", + "definition": { + "type": "http://activitystrea.ms/comment", + "name": { + "en": "Comment" + } + } + }, + "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": "\\mod_wiki\\event\\comment_deleted", + "event_function": "\\src\\transformer\\events\\mod_wiki\\comment_deleted" + } + }, + "contextActivities": { + "parent": [ + { + "id": "http://www.example.org/mod/wiki/comments.php?pageid=1", + "definition": { + "type": "http://id.tincanapi.com/activitytype/discussion", + "name": { + "en": "test_page_title Discussion" + } + } + }, + { + "id": "http://www.example.org/mod/wiki/view.php?pageid=1", + "definition": { + "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki-page", + "name": { + "en": "test_page_title" + }, + "description": { + "en": "test_content" + } + } + }, + { + "id": "http://www.example.org/mod/wiki/view.php?id=1", + "definition": { + "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki", + "name": { + "en": "test_name" + }, + "description": { + "en": "test_intro" + } + } + }, + { + "id": "http://www.example.org/course/section.php?id=1", + "objectType": "Activity", + "definition": { + "name": { + "en": "test_name Section 0" + }, + "type": "http://id.tincanapi.com/activitytype/section" + } + }, + { + "id": "http://www.example.org/course/view.php?id=1", + "definition": { + "type": "https://w3id.org/xapi/cmi5/activitytype/course", + "name": { + "en": "test_name" + } + } + } + ], + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + } + } + } +] diff --git a/tests/mod_wiki/comments_viewed/comments_viewed_test.php b/tests/mod_wiki/comments_viewed/comments_viewed_test.php new file mode 100644 index 000000000..4fa6a2091 --- /dev/null +++ b/tests/mod_wiki/comments_viewed/comments_viewed_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\mod_wiki; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for wiki comments viewed. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class comments_viewed_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 "mod_survey"; + } + + /** + * Appease auto-detecting of test cases. xapi_test_case has default test cases. + * + * @covers ::comments_viewed + * @return void + */ + public function test_init() { + + } +} diff --git a/tests/mod_wiki/comments_viewed/data.json b/tests/mod_wiki/comments_viewed/data.json new file mode 100644 index 000000000..3a53fc490 --- /dev/null +++ b/tests/mod_wiki/comments_viewed/data.json @@ -0,0 +1,36 @@ +{ + "modules": [ + { + "id": 1, + "name": "wiki" + } + ], + "wiki": [ + { + "id": 1, + "name": "test_name", + "intro": "

test_intro

" + } + ], + "wiki_subwikis": [ + { + "id": 1, + "wikiid": 1 + } + ], + "wiki_pages": [ + { + "id": 1, + "subwikiid": 1, + "title": "test_page_title", + "cachedcontent": "

test_content

" + } + ], + "comments": [ + { + "id": 1, + "content": "

test_content

", + "itemid": 1 + } + ] +} diff --git a/tests/mod_wiki/comments_viewed/event.json b/tests/mod_wiki/comments_viewed/event.json new file mode 100644 index 000000000..5cbabc265 --- /dev/null +++ b/tests/mod_wiki/comments_viewed/event.json @@ -0,0 +1,10 @@ +{ + "id": 1, + "userid": 1, + "courseid": 1, + "timecreated": 1433946701, + "contextinstanceid": 1, + "eventname": "\\mod_wiki\\event\\comments_viewed", + "objectid": 1, + "objecttable": "wiki_pages" +} diff --git a/tests/mod_wiki/comments_viewed/statements.json b/tests/mod_wiki/comments_viewed/statements.json new file mode 100644 index 000000000..27a98fffc --- /dev/null +++ b/tests/mod_wiki/comments_viewed/statements.json @@ -0,0 +1,95 @@ +[ + { + "actor": { + "name": "test_fullname", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, + "verb": { + "id": "http://id.tincanapi.com/verb/viewed", + "display": { + "en": "Viewed" + } + }, + "object": { + "id": "http://www.example.org/mod/wiki/comments.php?pageid=1", + "definition": { + "type": "http://id.tincanapi.com/activitytype/discussion", + "name": { + "en": "test_page_title Discussion" + } + } + }, + "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": "\\mod_wiki\\event\\comments_viewed", + "event_function": "\\src\\transformer\\events\\mod_wiki\\comments_viewed" + } + }, + "contextActivities": { + "parent": [ + { + "id": "http://www.example.org/mod/wiki/view.php?pageid=1", + "definition": { + "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki-page", + "name": { + "en": "test_page_title" + }, + "description": { + "en": "test_content" + } + } + }, + { + "id": "http://www.example.org/mod/wiki/view.php?id=1", + "definition": { + "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki", + "name": { + "en": "test_name" + }, + "description": { + "en": "test_intro" + } + } + }, + { + "id": "http://www.example.org/course/section.php?id=1", + "objectType": "Activity", + "definition": { + "name": { + "en": "test_name Section 0" + }, + "type": "http://id.tincanapi.com/activitytype/section" + } + }, + { + "id": "http://www.example.org/course/view.php?id=1", + "definition": { + "type": "https://w3id.org/xapi/cmi5/activitytype/course", + "name": { + "en": "test_name" + } + } + } + ], + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + } + } + } +] diff --git a/tests/mod_wiki/course_module_viewed/existing_module/data.json b/tests/mod_wiki/course_module_viewed/existing_module/data.json index 25c14ee88..4edf54c26 100644 --- a/tests/mod_wiki/course_module_viewed/existing_module/data.json +++ b/tests/mod_wiki/course_module_viewed/existing_module/data.json @@ -8,7 +8,8 @@ "wiki": [ { "id": 1, - "name": "test_name" + "name": "test_name", + "intro": "

test_intro

" } ] } diff --git a/tests/mod_wiki/course_module_viewed/existing_module/statements.json b/tests/mod_wiki/course_module_viewed/existing_module/statements.json index efd3da886..73368137f 100644 --- a/tests/mod_wiki/course_module_viewed/existing_module/statements.json +++ b/tests/mod_wiki/course_module_viewed/existing_module/statements.json @@ -19,6 +19,9 @@ "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki", "name": { "en": "test_name" + }, + "description": { + "en": "test_intro" } } }, diff --git a/tests/mod_wiki/page_viewed/data.json b/tests/mod_wiki/page_viewed/data.json new file mode 100644 index 000000000..8b4744ede --- /dev/null +++ b/tests/mod_wiki/page_viewed/data.json @@ -0,0 +1,29 @@ +{ + "modules": [ + { + "id": 1, + "name": "wiki" + } + ], + "wiki": [ + { + "id": 1, + "name": "test_name", + "intro": "

test_intro

" + } + ], + "wiki_subwikis": [ + { + "id": 1, + "wikiid": 1 + } + ], + "wiki_pages": [ + { + "id": 1, + "subwikiid": 1, + "title": "test_page_title", + "cachedcontent": "

test_content

" + } + ] +} diff --git a/tests/mod_wiki/page_viewed/event.json b/tests/mod_wiki/page_viewed/event.json new file mode 100644 index 000000000..56870143d --- /dev/null +++ b/tests/mod_wiki/page_viewed/event.json @@ -0,0 +1,10 @@ +{ + "id": 1, + "userid": 1, + "courseid": 1, + "timecreated": 1433946701, + "contextinstanceid": 1, + "eventname": "\\mod_wiki\\event\\page_viewed", + "objectid": 1, + "objecttable": "wiki_pages" +} diff --git a/tests/mod_wiki/page_viewed/page_viewed_test.php b/tests/mod_wiki/page_viewed/page_viewed_test.php new file mode 100644 index 000000000..6871e186c --- /dev/null +++ b/tests/mod_wiki/page_viewed/page_viewed_test.php @@ -0,0 +1,70 @@ +. + +namespace logstore_xapi\mod_wiki; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/admin/tool/log/store/xapi/tests/xapi_test_case.php'); + +/** + * Unit test for wiki page viewed. + * + * @package logstore_xapi + * @copyright Milt Reder + * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class page_viewed_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 "mod_survey"; + } + + /** + * Appease auto-detecting of test cases. xapi_test_case has default test cases. + * + * @covers ::page_viewed + * @return void + */ + public function test_init() { + + } +} diff --git a/tests/mod_wiki/page_viewed/statements.json b/tests/mod_wiki/page_viewed/statements.json new file mode 100644 index 000000000..22da01b2e --- /dev/null +++ b/tests/mod_wiki/page_viewed/statements.json @@ -0,0 +1,86 @@ +[ + { + "actor": { + "name": "test_fullname", + "account": { + "homePage": "http://www.example.org", + "name": "1" + } + }, + "verb": { + "id": "http://id.tincanapi.com/verb/viewed", + "display": { + "en": "Viewed" + } + }, + "object": { + "id": "http://www.example.org/mod/wiki/view.php?pageid=1", + "definition": { + "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki-page", + "name": { + "en": "test_page_title" + }, + "description": { + "en": "test_content" + } + } + }, + "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": "\\mod_wiki\\event\\page_viewed", + "event_function": "\\src\\transformer\\events\\mod_wiki\\page_viewed" + } + }, + "contextActivities": { + "parent": [ + { + "id": "http://www.example.org/mod/wiki/view.php?id=1", + "definition": { + "type": "https://xapi.edlm/profiles/edlm-lms/concepts/activity-types/wiki", + "name": { + "en": "test_name" + }, + "description": { + "en": "test_intro" + } + } + }, + { + "id": "http://www.example.org/course/section.php?id=1", + "objectType": "Activity", + "definition": { + "name": { + "en": "test_name Section 0" + }, + "type": "http://id.tincanapi.com/activitytype/section" + } + }, + { + "id": "http://www.example.org/course/view.php?id=1", + "definition": { + "type": "https://w3id.org/xapi/cmi5/activitytype/course", + "name": { + "en": "test_name" + } + } + } + ], + "category": [ + { + "id": "http://www.example.org", + "definition": { + "type": "http://id.tincanapi.com/activitytype/lms", + "name": { + "en": "test_name" + } + } + } + ] + } + } + } +]