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