public function test_course_module_viewed() { // There is no proper API to call to trigger this event, so what we are // doing here is simply making sure that the events returns the right information. $course = $this->getDataGenerator()->create_course(); $book = $this->getDataGenerator()->create_module('book', array('course' => $course->id)); $params = array('context' => context_module::instance($book->cmid), 'objectid' => $book->id); $event = \mod_book\event\course_module_viewed::create($params); // Triggering and capturing the event. $sink = $this->redirectEvents(); $event->trigger(); $events = $sink->get_events(); $this->assertCount(1, $events); $event = reset($events); // Checking that the event contains the expected values. $this->assertInstanceOf('\\mod_book\\event\\course_module_viewed', $event); $this->assertEquals(context_module::instance($book->cmid), $event->get_context()); $this->assertEquals($book->id, $event->objectid); $expected = array($course->id, 'book', 'view', 'view.php?id=' . $book->cmid, $book->id, $book->cmid); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); }
/** * Tests for replace_placeholders method. */ public function test_replace_placeholders() { global $USER; $this->resetAfterTest(); $this->setAdminUser(); $msgsink = $this->redirectMessages(); // Generate data. $course = $this->getDataGenerator()->create_course(); $toolgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor'); $context = \context_user::instance($USER->id, IGNORE_MISSING); // Creating book. $cm = new stdClass(); $cm->course = $course->id; $book = $this->getDataGenerator()->create_module('book', $cm); // Creating rule. $rulerecord = new stdClass(); $rulerecord->courseid = $course->id; $rulerecord->eventname = '\\mod_book\\event\\course_module_viewed'; $rulerecord->cmid = $book->cmid; $rulerecord->frequency = 1; $rulerecord->template = '{link} {modulelink} {rulename} {description} {eventname}'; $rule = $toolgenerator->create_rule($rulerecord); // Creating subscription. $subrecord = new stdClass(); $subrecord->courseid = $course->id; $subrecord->ruleid = $rule->id; $subrecord->userid = $USER->id; $toolgenerator->create_subscription($subrecord); // Now let us trigger the event. $params = array('context' => context_module::instance($book->cmid), 'objectid' => $book->id); $event = \mod_book\event\course_module_viewed::create($params); $event->trigger(); $this->run_adhock_tasks(); $msgs = $msgsink->get_messages(); $msg = array_pop($msgs); $modurl = new moodle_url('/mod/book/view.php', array('id' => $book->cmid)); $expectedmsg = $event->get_url()->out() . ' ' . $modurl->out() . ' ' . $rule->get_name($context) . ' ' . $rule->get_description($context) . ' ' . $rule->get_event_name(); $this->assertEquals($expectedmsg, $msg->fullmessage); }
/** * Tests for replace_placeholders method. */ public function test_replace_placeholders() { global $USER; $this->resetAfterTest(); $this->setAdminUser(); $msgsink = $this->redirectMessages(); // Generate data. $course = $this->getDataGenerator()->create_course(); $toolgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor'); $context = \context_user::instance($USER->id, IGNORE_MISSING); // Creating book. $cm = new stdClass(); $cm->course = $course->id; $book = $this->getDataGenerator()->create_module('book', $cm); // Creating rule. $rulerecord = new stdClass(); $rulerecord->courseid = $course->id; $rulerecord->eventname = '\\mod_book\\event\\course_module_viewed'; $rulerecord->cmid = $book->cmid; $rulerecord->frequency = 1; $rulerecord->template = '## {link} ## * {modulelink} * __{rulename}__ * {description} * {eventname}'; $rulerecord->templateformat = FORMAT_MARKDOWN; $rule = $toolgenerator->create_rule($rulerecord); // Creating subscription. $subrecord = new stdClass(); $subrecord->courseid = $course->id; $subrecord->ruleid = $rule->id; $subrecord->userid = $USER->id; $toolgenerator->create_subscription($subrecord); // Now let us trigger the event. $params = array('context' => context_module::instance($book->cmid), 'objectid' => $book->id); $event = \mod_book\event\course_module_viewed::create($params); $event->trigger(); $this->run_adhock_tasks(); $msgs = $msgsink->get_messages(); $msg = array_pop($msgs); $modurl = new moodle_url('/mod/book/view.php', array('id' => $book->cmid)); $this->assertContains('<h2>' . $event->get_url()->out() . '</h2>', $msg->fullmessagehtml); $this->assertContains('<li>' . $modurl->out() . '</li>', $msg->fullmessagehtml); $this->assertContains('<li><strong>' . $rule->get_name($context) . '</strong></li>', $msg->fullmessagehtml); $this->assertContains('<li>' . $rule->get_description($context) . '</li>', $msg->fullmessagehtml); $this->assertContains('<li>' . $rule->get_event_name() . '</li>', $msg->fullmessagehtml); $this->assertEquals(FORMAT_PLAIN, $msg->fullmessageformat); $this->assertNotContains('<h2>', $msg->fullmessage); $this->assertNotContains('##', $msg->fullmessage); $this->assertContains(strtoupper($event->get_url()->out()), $msg->fullmessage); $this->assertContains('* ' . $modurl->out(), $msg->fullmessage); $this->assertContains('* ' . strtoupper($rule->get_name($context)), $msg->fullmessage); $this->assertContains('* ' . $rule->get_description($context), $msg->fullmessage); $this->assertContains('* ' . $rule->get_event_name(), $msg->fullmessage); }
} } } else { $edit = 0; } // read chapters $chapters = book_preload_chapters($book); if ($allowedit and !$chapters) { redirect('edit.php?cmid=' . $cm->id); // No chapters - add new one. } // Check chapterid and read chapter data if ($chapterid == '0') { // Go to first chapter if no given. $params = array('context' => $context, 'objectid' => $book->id); $event = \mod_book\event\course_module_viewed::create($params); $event->add_record_snapshot('book', $book); $event->trigger(); foreach ($chapters as $ch) { if ($edit) { $chapterid = $ch->id; break; } if (!$ch->hidden) { $chapterid = $ch->id; break; } } } $courseurl = new moodle_url('/course/view.php', array('id' => $course->id)); // No content in the book.