/**
  * 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);
 }
Exemple #2
0
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();