/** * Test the highscore added event. * * There is no external API for adding a highscore, so the unit test will simply create * and trigger the event and ensure the legacy log data is returned as expected. */ public function test_highscore_added() { global $DB; // Create a highscore. $newhighscore = new stdClass(); $newhighscore->lessonid = $this->lesson->id; $newhighscore->userid = 3; $newhighscore->gradeid = 70; $newhighscore->nickname = 'noob'; $newhighscore->id = $DB->insert_record('lesson_high_scores', $newhighscore); // Create a highscore added event. $event = \mod_lesson\event\highscore_added::create(array('objectid' => $newhighscore->id, 'context' => context_module::instance($this->lesson->properties()->cmid), 'courseid' => $this->course->id, 'other' => array('lessonid' => $this->lesson->id, 'nickname' => 'noob'))); // 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\\highscore_added', $event); $this->assertEquals(context_module::instance($this->lesson->properties()->cmid), $event->get_context()); $expected = array($this->course->id, 'lesson', 'update highscores', 'highscores.php?id=' . $this->lesson->properties()->cmid, 'noob', $this->lesson->properties()->cmid); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); }
} } } $newhighscore = new stdClass; $newhighscore->lessonid = $lesson->id; $newhighscore->userid = $USER->id; $newhighscore->gradeid = $newgrade->id; $newhighscore->nickname = $name; $newhighscore->id = $DB->insert_record('lesson_high_scores', $newhighscore); // Trigger highscore updated event. $event = \mod_lesson\event\highscore_added::create(array( 'objectid' => $newhighscore->id, 'context' => $context, 'courseid' => $course->id, )); $event->trigger(); $lesson->add_message(get_string('postsuccess', 'lesson'), 'notifysuccess'); redirect("$CFG->wwwroot/mod/lesson/highscores.php?id=$cm->id&link=1"); } else { print_error('invalidformdata'); } break; } // Trigger highscore viewed event. $event = \mod_lesson\event\highscores_viewed::create(array( 'objectid' => $lesson->properties()->id,
foreach ($highscores as $highscore) { if ($highscore->grade == $lowscore) { $DB->delete_records('lesson_high_scores', array('id' => $highscore->id)); } } } } } $newhighscore = new stdClass(); $newhighscore->lessonid = $lesson->id; $newhighscore->userid = $USER->id; $newhighscore->gradeid = $newgrade->id; $newhighscore->nickname = $name; $newhighscore->id = $DB->insert_record('lesson_high_scores', $newhighscore); // Trigger highscore updated event. $event = \mod_lesson\event\highscore_added::create(array('objectid' => $newhighscore->id, 'context' => $context, 'courseid' => $course->id, 'other' => array('lessonid' => $lesson->id, 'nickname' => $newhighscore->nickname))); $event->trigger(); $lesson->add_message(get_string('postsuccess', 'lesson'), 'notifysuccess'); redirect("{$CFG->wwwroot}/mod/lesson/highscores.php?id={$cm->id}&link=1"); } else { print_error('invalidformdata'); } break; } // Trigger highscore viewed event. $event = \mod_lesson\event\highscores_viewed::create(array('objectid' => $lesson->properties()->id, 'context' => $context, 'courseid' => $course->id)); $event->trigger(); $lessonoutput = $PAGE->get_renderer('mod_lesson'); echo $lessonoutput->header($lesson, $cm, 'highscores', false, null, get_string('viewhighscores', 'lesson')); switch ($mode) { case 'add':