From 406d08aeeb76041ee1316c08f3890aba1c7272d1 Mon Sep 17 00:00:00 2001 From: Ryan Smith <3045513+ryansmith94@users.noreply.github.com> Date: Mon, 30 Jul 2018 15:42:16 +0100 Subject: [PATCH] feat: Adds statement for essay quiz questions. (#194) --- .editorconfig | 2 +- .../attempt_submitted.php | 2 +- .../mod_quiz/attempt_submitted/handler.php | 36 ++++ .../mod_quiz/question_answered/essay.php | 74 +++++++ .../mod_quiz/question_answered/handler.php | 33 ++++ src/transformer/get_event_function_map.php | 4 +- .../attempt_submitted/essay/data.json | 65 ++++++ .../event.json | 1 + .../attempt_submitted/essay/statements.json | 187 ++++++++++++++++++ .../test.php | 2 +- .../data.json | 12 +- .../attempt_submitted/no_questions/event.json | 10 + .../statements.json | 2 +- .../attempt_submitted/no_questions/test.php | 24 +++ .../attempt_submitted/unknown_qtype/data.json | 65 ++++++ .../unknown_qtype/event.json | 10 + .../unknown_qtype/statements.json | 94 +++++++++ .../attempt_submitted/unknown_qtype/test.php | 24 +++ 18 files changed, 640 insertions(+), 7 deletions(-) rename src/transformer/events/mod_quiz/{ => attempt_submitted}/attempt_submitted.php (97%) create mode 100644 src/transformer/events/mod_quiz/attempt_submitted/handler.php create mode 100644 src/transformer/events/mod_quiz/question_answered/essay.php create mode 100644 src/transformer/events/mod_quiz/question_answered/handler.php create mode 100644 tests/mod_quiz/attempt_submitted/essay/data.json rename tests/mod_quiz/attempt_submitted/{existing_attempt_submitted => essay}/event.json (87%) create mode 100644 tests/mod_quiz/attempt_submitted/essay/statements.json rename tests/mod_quiz/attempt_submitted/{existing_attempt_submitted => essay}/test.php (92%) rename tests/mod_quiz/attempt_submitted/{existing_attempt_submitted => no_questions}/data.json (79%) create mode 100644 tests/mod_quiz/attempt_submitted/no_questions/event.json rename tests/mod_quiz/attempt_submitted/{existing_attempt_submitted => no_questions}/statements.json (98%) create mode 100644 tests/mod_quiz/attempt_submitted/no_questions/test.php create mode 100644 tests/mod_quiz/attempt_submitted/unknown_qtype/data.json create mode 100644 tests/mod_quiz/attempt_submitted/unknown_qtype/event.json create mode 100644 tests/mod_quiz/attempt_submitted/unknown_qtype/statements.json create mode 100644 tests/mod_quiz/attempt_submitted/unknown_qtype/test.php diff --git a/.editorconfig b/.editorconfig index 45d516e..1cb779b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,5 +11,5 @@ indent_style = space indent_size = 2 charset = utf-8 -[*.php] +[*.{php,json}] indent_size = 4 diff --git a/src/transformer/events/mod_quiz/attempt_submitted.php b/src/transformer/events/mod_quiz/attempt_submitted/attempt_submitted.php similarity index 97% rename from src/transformer/events/mod_quiz/attempt_submitted.php rename to src/transformer/events/mod_quiz/attempt_submitted/attempt_submitted.php index 042b63d..58d8d33 100644 --- a/src/transformer/events/mod_quiz/attempt_submitted.php +++ b/src/transformer/events/mod_quiz/attempt_submitted/attempt_submitted.php @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. -namespace src\transformer\events\mod_quiz; +namespace src\transformer\events\mod_quiz\attempt_submitted; defined('MOODLE_INTERNAL') || die(); diff --git a/src/transformer/events/mod_quiz/attempt_submitted/handler.php b/src/transformer/events/mod_quiz/attempt_submitted/handler.php new file mode 100644 index 0000000..01b2bf6 --- /dev/null +++ b/src/transformer/events/mod_quiz/attempt_submitted/handler.php @@ -0,0 +1,36 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +namespace src\transformer\events\mod_quiz\attempt_submitted; + +defined('MOODLE_INTERNAL') || die(); + +use src\transformer\utils as utils; +use src\transformer\events\mod_quiz\question_answered as question_answered; + +function handler(array $config, \stdClass $event) { + $repo = $config['repo']; + $questionattempts = $repo->read_records('question_attempts', [ + 'questionusageid' => $event->objectid + ]); + + return array_merge( + attempt_submitted($config, $event), + array_reduce($questionattempts, function ($result, $questionattempt) use ($config, $event) { + return array_merge($result, question_answered\handler($config, $event, $questionattempt)); + }, []) + ); +} \ No newline at end of file diff --git a/src/transformer/events/mod_quiz/question_answered/essay.php b/src/transformer/events/mod_quiz/question_answered/essay.php new file mode 100644 index 0000000..5fafad5 --- /dev/null +++ b/src/transformer/events/mod_quiz/question_answered/essay.php @@ -0,0 +1,74 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +namespace src\transformer\events\mod_quiz\question_answered; + +defined('MOODLE_INTERNAL') || die(); + +use src\transformer\utils as utils; + +function essay(array $config, \stdClass $event, \stdClass $questionattempt, \stdClass $question) { + $repo = $config['repo']; + $user = $repo->read_record_by_id('user', $event->relateduserid); + $course = $repo->read_record_by_id('course', $event->courseid); + $attempt = $repo->read_record_by_id('quiz_attempts', $questionattempt->questionusageid); + $quiz = $repo->read_record_by_id('quiz', $attempt->quiz); + $coursemodule = $repo->read_record_by_id('course_modules', $event->contextinstanceid); + $lang = utils\get_course_lang($course); + + return [[ + 'actor' => utils\get_user($config, $user), + 'verb' => [ + 'id' => 'http://adlnet.gov/expapi/verbs/answered', + 'display' => [ + $lang => 'answered' + ], + ], + 'object' => [ + 'id' => $config['app_url'].'/question/question.php?cmid='.$coursemodule->id.'&id='.$question->id, + 'definition' => [ + 'type' => 'http://adlnet.gov/expapi/activities/question', + 'name' => [ + $lang => $questionattempt->questionsummary, + ], + 'interactionType' => 'long-fill-in', + ] + ], + 'timestamp' => utils\get_event_timestamp($event), + 'result' => [ + 'response' => $questionattempt->responsesummary, + 'completion' => $questionattempt->responsesummary !== '', + ], + 'context' => [ + 'platform' => $config['source_name'], + 'language' => $lang, + 'extensions' => [ + utils\INFO_EXTENSION => utils\get_info($config, $event), + ], + 'contextActivities' => [ + 'grouping' => [ + utils\get_activity\site($config), + utils\get_activity\course($config, $course), + utils\get_activity\module($config, 'quiz', $quiz, $lang), + utils\get_activity\module($config, 'attempt', $attempt, $lang), + ], + 'category' => [ + utils\get_activity\source($config), + ] + ], + ] + ]]; +} \ No newline at end of file diff --git a/src/transformer/events/mod_quiz/question_answered/handler.php b/src/transformer/events/mod_quiz/question_answered/handler.php new file mode 100644 index 0000000..cf8d648 --- /dev/null +++ b/src/transformer/events/mod_quiz/question_answered/handler.php @@ -0,0 +1,33 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +namespace src\transformer\events\mod_quiz\question_answered; + +defined('MOODLE_INTERNAL') || die(); + +use src\transformer\utils as utils; + +function handler(array $config, \stdClass $event, \stdClass $questionattempt) { + $repo = $config['repo']; + $question = $repo->read_record_by_id('question', $questionattempt->questionid); + + switch ($question->qtype) { + case 'essay': + return essay($config, $event, $questionattempt, $question); + default: + return []; + } +} \ No newline at end of file diff --git a/src/transformer/get_event_function_map.php b/src/transformer/get_event_function_map.php index a46f820..e0b46d6 100644 --- a/src/transformer/get_event_function_map.php +++ b/src/transformer/get_event_function_map.php @@ -47,10 +47,10 @@ function get_event_function_map() { '\mod_lti\event\course_module_viewed' => 'all\course_module_viewed', '\mod_page\event\course_module_viewed' => 'all\course_module_viewed', '\mod_quiz\event\course_module_viewed' => 'all\course_module_viewed', - '\mod_quiz\event\attempt_abandoned' => 'mod_quiz\attempt_submitted', + '\mod_quiz\event\attempt_abandoned' => 'mod_quiz\attempt_submitted\handler', '\mod_quiz\event\attempt_started' => 'mod_quiz\attempt_started', '\mod_quiz\event\attempt_reviewed' => 'mod_quiz\attempt_reviewed', - '\mod_quiz\event\attempt_submitted' => 'mod_quiz\attempt_submitted', + '\mod_quiz\event\attempt_submitted' => 'mod_quiz\attempt_submitted\handler', '\mod_quiz\event\attempt_viewed' => 'all\course_module_viewed', '\mod_resource\event\course_module_viewed' => 'all\course_module_viewed', '\mod_scorm\event\course_module_viewed' => 'all\course_module_viewed', diff --git a/tests/mod_quiz/attempt_submitted/essay/data.json b/tests/mod_quiz/attempt_submitted/essay/data.json new file mode 100644 index 0000000..fe47969 --- /dev/null +++ b/tests/mod_quiz/attempt_submitted/essay/data.json @@ -0,0 +1,65 @@ +{ + "user": [ + { + "id": 1, + "firstname": "test_fullname", + "email": "test@test.com" + } + ], + "course": [ + { + "id": 1, + "fullname": "test_name", + "lang": "en" + } + ], + "course_modules": [ + { + "id": 1, + "course": 1, + "module": 1, + "instance": 1 + } + ], + "quiz_attempts": [ + { + "id": 1, + "quiz": 1, + "sumgrades": 50, + "state": "finished", + "timefinish": 1, + "timestart": 0 + } + ], + "quiz": [ + { + "id": 1, + "name": "test_quiz_name" + } + ], + "grade_items": [ + { + "id": 1, + "iteminstance": 1, + "itemmodule": "quiz", + "grademin": 0, + "grademax": 100, + "gradepass": 50 + } + ], + "question_attempts": [ + { + "id": 1, + "questionusageid": 1, + "questionid": 1, + "questionsummary": "test_question", + "responsesummary": "test_answer" + } + ], + "question": [ + { + "id": 1, + "qtype": "essay" + } + ] +} \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/existing_attempt_submitted/event.json b/tests/mod_quiz/attempt_submitted/essay/event.json similarity index 87% rename from tests/mod_quiz/attempt_submitted/existing_attempt_submitted/event.json rename to tests/mod_quiz/attempt_submitted/essay/event.json index 665267d..0f8370b 100644 --- a/tests/mod_quiz/attempt_submitted/existing_attempt_submitted/event.json +++ b/tests/mod_quiz/attempt_submitted/essay/event.json @@ -5,5 +5,6 @@ "timecreated": 1433946701, "objecttable": "attempt", "objectid": 1, + "contextinstanceid": 1, "eventname": "\\mod_quiz\\event\\attempt_submitted" } \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/essay/statements.json b/tests/mod_quiz/attempt_submitted/essay/statements.json new file mode 100644 index 0000000..13a9604 --- /dev/null +++ b/tests/mod_quiz/attempt_submitted/essay/statements.json @@ -0,0 +1,187 @@ +[ + { + "actor": { + "name": "test_fullname", + "account": { + "homePage": "http:\/\/www.example.org", + "name": "1" + } + }, + "verb": { + "id": "http:\/\/adlnet.gov\/expapi\/verbs\/completed", + "display": { + "en": "completed" + } + }, + "object": { + "id": "http:\/\/www.example.org\/mod\/quiz\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module", + "name": { + "en": "test_quiz_name" + } + } + }, + "timestamp": "2015-06-10T15:31:41+01:00", + "result": { + "score": { + "raw": 50, + "min": 0, + "max": 100, + "scaled": 0.5 + }, + "completion": true, + "success": true, + "duration": "PT1S" + }, + "context": { + "platform": "Moodle", + "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_quiz\\event\\attempt_submitted", + "event_function": "\\src\\transformer\\events\\mod_quiz\\attempt_submitted\\handler" + } + }, + "contextActivities": { + "other": [ + { + "id": "http:\/\/www.example.org\/mod\/attempt\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module", + "name": { + "en": "attempt" + } + } + } + ], + "grouping": [ + { + "id": "http:\/\/www.example.org", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms", + "name": { + "en": "test_name" + } + } + }, + { + "id": "http:\/\/www.example.org\/course\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/course", + "name": { + "en": "test_name" + } + } + } + ], + "category": [ + { + "id": "http:\/\/moodle.org", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/source", + "name": { + "en": "Moodle" + } + } + } + ] + } + } + }, + { + "actor": { + "name": "test_fullname", + "account": { + "homePage": "http:\/\/www.example.org", + "name": "1" + } + }, + "verb": { + "id": "http:\/\/adlnet.gov\/expapi\/verbs\/answered", + "display": { + "en": "answered" + } + }, + "object": { + "id": "http:\/\/www.example.org\/question\/question.php?cmid=1&id=1", + "definition": { + "type": "http:\/\/adlnet.gov\/expapi\/activities\/question", + "name": { + "en": "test_question" + }, + "interactionType": "long-fill-in" + } + }, + "timestamp": "2015-06-10T15:31:41+01:00", + "result": { + "response": "test_answer", + "completion": true + }, + "context": { + "platform": "Moodle", + "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_quiz\\event\\attempt_submitted", + "event_function": "\\src\\transformer\\events\\mod_quiz\\attempt_submitted\\handler" + } + }, + "contextActivities": { + "grouping": [ + { + "id": "http:\/\/www.example.org", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms", + "name": { + "en": "test_name" + } + } + }, + { + "id": "http:\/\/www.example.org\/course\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/course", + "name": { + "en": "test_name" + } + } + }, + { + "id": "http:\/\/www.example.org\/mod\/quiz\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module", + "name": { + "en": "test_quiz_name" + } + } + }, + { + "id": "http:\/\/www.example.org\/mod\/attempt\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module", + "name": { + "en": "attempt" + } + } + } + ], + "category": [ + { + "id": "http:\/\/moodle.org", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/source", + "name": { + "en": "Moodle" + } + } + } + ] + } + } + } +] \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/existing_attempt_submitted/test.php b/tests/mod_quiz/attempt_submitted/essay/test.php similarity index 92% rename from tests/mod_quiz/attempt_submitted/existing_attempt_submitted/test.php rename to tests/mod_quiz/attempt_submitted/essay/test.php index d849593..28a56ec 100644 --- a/tests/mod_quiz/attempt_submitted/existing_attempt_submitted/test.php +++ b/tests/mod_quiz/attempt_submitted/essay/test.php @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. -namespace tests\mod_quiz\attempt_submitted\existing_attempt_submitted; +namespace tests\mod_quiz\attempt_submitted\essay; defined('MOODLE_INTERNAL') || die(); class test extends \tests\xapi_test_case { diff --git a/tests/mod_quiz/attempt_submitted/existing_attempt_submitted/data.json b/tests/mod_quiz/attempt_submitted/no_questions/data.json similarity index 79% rename from tests/mod_quiz/attempt_submitted/existing_attempt_submitted/data.json rename to tests/mod_quiz/attempt_submitted/no_questions/data.json index d0e5ba8..310e35a 100644 --- a/tests/mod_quiz/attempt_submitted/existing_attempt_submitted/data.json +++ b/tests/mod_quiz/attempt_submitted/no_questions/data.json @@ -13,6 +13,14 @@ "lang": "en" } ], + "course_modules": [ + { + "id": 1, + "course": 1, + "module": 1, + "instance": 1 + } + ], "quiz_attempts": [ { "id": 1, @@ -38,5 +46,7 @@ "grademax": 100, "gradepass": 50 } - ] + ], + "question_attempts": [], + "question": [] } \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/no_questions/event.json b/tests/mod_quiz/attempt_submitted/no_questions/event.json new file mode 100644 index 0000000..0f8370b --- /dev/null +++ b/tests/mod_quiz/attempt_submitted/no_questions/event.json @@ -0,0 +1,10 @@ +{ + "id": 1, + "relateduserid": 1, + "courseid": 1, + "timecreated": 1433946701, + "objecttable": "attempt", + "objectid": 1, + "contextinstanceid": 1, + "eventname": "\\mod_quiz\\event\\attempt_submitted" +} \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/existing_attempt_submitted/statements.json b/tests/mod_quiz/attempt_submitted/no_questions/statements.json similarity index 98% rename from tests/mod_quiz/attempt_submitted/existing_attempt_submitted/statements.json rename to tests/mod_quiz/attempt_submitted/no_questions/statements.json index 2dcfc40..8a51be8 100644 --- a/tests/mod_quiz/attempt_submitted/existing_attempt_submitted/statements.json +++ b/tests/mod_quiz/attempt_submitted/no_questions/statements.json @@ -42,7 +42,7 @@ "http:\/\/moodle.org": "1.0.0", "https:\/\/github.com\/xAPI-vle\/moodle-logstore_xapi": "0.0.0-development", "event_name": "\\mod_quiz\\event\\attempt_submitted", - "event_function": "\\src\\transformer\\events\\mod_quiz\\attempt_submitted" + "event_function": "\\src\\transformer\\events\\mod_quiz\\attempt_submitted\\handler" } }, "contextActivities": { diff --git a/tests/mod_quiz/attempt_submitted/no_questions/test.php b/tests/mod_quiz/attempt_submitted/no_questions/test.php new file mode 100644 index 0000000..9ac1043 --- /dev/null +++ b/tests/mod_quiz/attempt_submitted/no_questions/test.php @@ -0,0 +1,24 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +namespace tests\mod_quiz\attempt_submitted\no_questions; +defined('MOODLE_INTERNAL') || die(); + +class test extends \tests\xapi_test_case { + protected function get_test_dir() { + return __DIR__; + } +} \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/unknown_qtype/data.json b/tests/mod_quiz/attempt_submitted/unknown_qtype/data.json new file mode 100644 index 0000000..7bb8469 --- /dev/null +++ b/tests/mod_quiz/attempt_submitted/unknown_qtype/data.json @@ -0,0 +1,65 @@ +{ + "user": [ + { + "id": 1, + "firstname": "test_fullname", + "email": "test@test.com" + } + ], + "course": [ + { + "id": 1, + "fullname": "test_name", + "lang": "en" + } + ], + "course_modules": [ + { + "id": 1, + "course": 1, + "module": 1, + "instance": 1 + } + ], + "quiz_attempts": [ + { + "id": 1, + "quiz": 1, + "sumgrades": 50, + "state": "finished", + "timefinish": 1, + "timestart": 0 + } + ], + "quiz": [ + { + "id": 1, + "name": "test_quiz_name" + } + ], + "grade_items": [ + { + "id": 1, + "iteminstance": 1, + "itemmodule": "quiz", + "grademin": 0, + "grademax": 100, + "gradepass": 50 + } + ], + "question_attempts": [ + { + "id": 1, + "questionusageid": 1, + "questionid": 1, + "questionsummary": "test_question", + "responsesummary": "test_answer" + } + ], + "question": [ + { + "id": 1, + "qtype": "unknown" + } + ] +} \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/unknown_qtype/event.json b/tests/mod_quiz/attempt_submitted/unknown_qtype/event.json new file mode 100644 index 0000000..0f8370b --- /dev/null +++ b/tests/mod_quiz/attempt_submitted/unknown_qtype/event.json @@ -0,0 +1,10 @@ +{ + "id": 1, + "relateduserid": 1, + "courseid": 1, + "timecreated": 1433946701, + "objecttable": "attempt", + "objectid": 1, + "contextinstanceid": 1, + "eventname": "\\mod_quiz\\event\\attempt_submitted" +} \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/unknown_qtype/statements.json b/tests/mod_quiz/attempt_submitted/unknown_qtype/statements.json new file mode 100644 index 0000000..8a51be8 --- /dev/null +++ b/tests/mod_quiz/attempt_submitted/unknown_qtype/statements.json @@ -0,0 +1,94 @@ +[ + { + "actor": { + "name": "test_fullname", + "account": { + "homePage": "http:\/\/www.example.org", + "name": "1" + } + }, + "verb": { + "id": "http:\/\/adlnet.gov\/expapi\/verbs\/completed", + "display": { + "en": "completed" + } + }, + "object": { + "id": "http:\/\/www.example.org\/mod\/quiz\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module", + "name": { + "en": "test_quiz_name" + } + } + }, + "timestamp": "2015-06-10T15:31:41+01:00", + "result": { + "score": { + "raw": 50, + "min": 0, + "max": 100, + "scaled": 0.5 + }, + "completion": true, + "success": true, + "duration": "PT1S" + }, + "context": { + "platform": "Moodle", + "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_quiz\\event\\attempt_submitted", + "event_function": "\\src\\transformer\\events\\mod_quiz\\attempt_submitted\\handler" + } + }, + "contextActivities": { + "other": [ + { + "id": "http:\/\/www.example.org\/mod\/attempt\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/module", + "name": { + "en": "attempt" + } + } + } + ], + "grouping": [ + { + "id": "http:\/\/www.example.org", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms", + "name": { + "en": "test_name" + } + } + }, + { + "id": "http:\/\/www.example.org\/course\/view.php?id=1", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/lms\/course", + "name": { + "en": "test_name" + } + } + } + ], + "category": [ + { + "id": "http:\/\/moodle.org", + "definition": { + "type": "http:\/\/id.tincanapi.com\/activitytype\/source", + "name": { + "en": "Moodle" + } + } + } + ] + } + } + } +] \ No newline at end of file diff --git a/tests/mod_quiz/attempt_submitted/unknown_qtype/test.php b/tests/mod_quiz/attempt_submitted/unknown_qtype/test.php new file mode 100644 index 0000000..93b4f0d --- /dev/null +++ b/tests/mod_quiz/attempt_submitted/unknown_qtype/test.php @@ -0,0 +1,24 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +namespace tests\mod_quiz\attempt_submitted\unknown_qtype; +defined('MOODLE_INTERNAL') || die(); + +class test extends \tests\xapi_test_case { + protected function get_test_dir() { + return __DIR__; + } +} \ No newline at end of file -- GitLab