/** * Test the essay attempt viewed event. * * There is no external API for viewing an essay attempt, so the unit test will simply * create and trigger the event and ensure the legacy log data is returned as expected. */ public function test_essay_attempt_viewed() { // Create a essays list viewed event $event = \mod_lesson\event\essay_attempt_viewed::create(array('objectid' => $this->lesson->id, 'relateduserid' => 3, 'context' => context_module::instance($this->lesson->properties()->cmid), 'courseid' => $this->course->id)); // 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_lesson\\event\\essay_attempt_viewed', $event); $this->assertEquals(context_module::instance($this->lesson->properties()->cmid), $event->get_context()); $expected = array($this->course->id, 'lesson', 'view grade', 'essay.php?id=' . $this->lesson->properties()->cmid . '&mode=grade&attemptid=' . $this->lesson->id, get_string('manualgrading', 'lesson'), $this->lesson->properties()->cmid); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); }
} } // email link for this user $url = new moodle_url('/mod/lesson/essay.php', array('id' => $cm->id, 'mode' => 'email', 'userid' => $userid, 'sesskey' => sesskey())); $emaillink = html_writer::link($url, get_string('emailgradedessays', 'lesson')); $table->data[] = array($OUTPUT->user_picture($users[$userid], array('courseid' => $course->id)) . $studentname, implode("<br />", $essaylinks), $emaillink); } // email link for all users $url = new moodle_url('/mod/lesson/essay.php', array('id' => $cm->id, 'mode' => 'email', 'sesskey' => sesskey())); $emailalllink = html_writer::link($url, get_string('emailallgradedessays', 'lesson')); $table->data[] = array(' ', ' ', $emailalllink); echo html_writer::table($table); break; case 'grade': // Trigger the essay grade viewed event. $event = \mod_lesson\event\essay_attempt_viewed::create(array('objectid' => $attempt->id, 'relateduserid' => $attempt->userid, 'context' => $context, 'courseid' => $course->id)); $event->add_record_snapshot('lesson_attempts', $attempt); $event->trigger(); // Grading form // Expects the following to be set: $attemptid, $answer, $user, $page, $attempt $essayinfo = lesson_page_type_essay::extract_useranswer($attempt->useranswer); $currentpage = $lesson->load_page($attempt->pageid); $mform = new essay_grading_form(null, array('scoreoptions' => $scoreoptions, 'user' => $user)); $data = new stdClass(); $data->id = $cm->id; $data->attemptid = $attemptid; $data->score = $essayinfo->score; $data->question = format_text($currentpage->contents, $currentpage->contentsformat, $formattextdefoptions); $data->studentanswer = format_text($essayinfo->answer, $essayinfo->answerformat, array('context' => $context, 'para' => true)); $data->response = $essayinfo->response; $data->responseformat = $essayinfo->responseformat;