/** * Test the report viewed event. * * There is no external API for viewing reports, so the unit test will simply * create and trigger the event and ensure the event data is returned as expected. */ public function test_report_viewed() { $this->resetAfterTest(); $this->setAdminUser(); $course = $this->getDataGenerator()->create_course(); $quiz = $this->getDataGenerator()->create_module('quiz', array('course' => $course->id)); $params = array('context' => $context = context_module::instance($quiz->cmid), 'other' => array('quizid' => $quiz->id, 'reportname' => 'overview')); $event = \mod_quiz\event\report_viewed::create($params); // Trigger and capture the event. $sink = $this->redirectEvents(); $event->trigger(); $events = $sink->get_events(); $event = reset($events); // Check that the event data is valid. $this->assertInstanceOf('\\mod_quiz\\event\\report_viewed', $event); $this->assertEquals(context_module::instance($quiz->cmid), $event->get_context()); $expected = array($course->id, 'quiz', 'report', 'report.php?id=' . $quiz->cmid . '&mode=overview', $quiz->id, $quiz->cmid); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); }
if ($mode == '') { // Default to first accessible report and redirect. $url->param('mode', reset($reportlist)); redirect($url); } else { if (!in_array($mode, $reportlist)) { print_error('erroraccessingreport', 'quiz'); } } if (!is_readable("report/{$mode}/report.php")) { print_error('reportnotfound', 'quiz', '', $mode); } // Open the selected quiz report and display it. $file = $CFG->dirroot . '/mod/quiz/report/' . $mode . '/report.php'; if (is_readable($file)) { include_once $file; } $reportclassname = 'quiz_' . $mode . '_report'; if (!class_exists($reportclassname)) { print_error('preprocesserror', 'quiz'); } $report = new $reportclassname(); $report->display($quiz, $cm, $course); // Print footer. echo $OUTPUT->footer(); // Log that this report was viewed. $params = array('context' => $context, 'other' => array('quizid' => $quiz->id, 'reportname' => $mode)); $event = \mod_quiz\event\report_viewed::create($params); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('quiz', $quiz); $event->trigger();