mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 09:26:35 +02:00
MDL-47162 core_message: debug whenever courseid is missing
Instead of silently defaulting to SITEID when courseid (coming from message_send()/\core\message\manager::send_message()) is missing, now a debugging message is shown to allow developers to fix their messages to, always, include courseid. Raw creation of events via message_sent::create() missing other[courseid] leads to coding exception since now (there shouldn't be any legacy use, as far as they are always created via create_from_ids() when sending a message. Updated upgrade.txt notes a little bit, added references the 3.6 final deprecation issue (MDL-55449) and covered with unit tests.
This commit is contained in:
parent
9d0e8a4f6d
commit
a29bcf7819
5 changed files with 78 additions and 5 deletions
|
@ -202,7 +202,7 @@ class core_message_events_testcase extends advanced_testcase {
|
|||
'relateduserid' => 2,
|
||||
'other' => array(
|
||||
'messageid' => 3,
|
||||
'courseid' => 1
|
||||
'courseid' => 4
|
||||
)
|
||||
));
|
||||
|
||||
|
@ -219,8 +219,66 @@ class core_message_events_testcase extends advanced_testcase {
|
|||
$this->assertEventLegacyLogData($expected, $event);
|
||||
$url = new moodle_url('/message/index.php', array('user1' => $event->userid, 'user2' => $event->relateduserid));
|
||||
$this->assertEquals($url, $event->get_url());
|
||||
$this->assertEquals(3, $event->other['messageid']);
|
||||
$this->assertEquals(4, $event->other['courseid']);
|
||||
}
|
||||
|
||||
public function test_mesage_sent_without_other_courseid() {
|
||||
|
||||
// Creating a message_sent event without other[courseid] leads to exception.
|
||||
$this->expectException('coding_exception');
|
||||
$this->expectExceptionMessage('The \'courseid\' value must be set in other');
|
||||
|
||||
$event = \core\event\message_sent::create(array(
|
||||
'userid' => 1,
|
||||
'context' => context_system::instance(),
|
||||
'relateduserid' => 2,
|
||||
'other' => array(
|
||||
'messageid' => 3,
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
public function test_mesage_sent_via_create_from_ids() {
|
||||
// Containing courseid.
|
||||
$event = \core\event\message_sent::create_from_ids(1, 2, 3, 4);
|
||||
|
||||
// Trigger and capturing the event.
|
||||
$sink = $this->redirectEvents();
|
||||
$event->trigger();
|
||||
$events = $sink->get_events();
|
||||
$event = reset($events);
|
||||
|
||||
// Check that the event data is valid.
|
||||
$this->assertInstanceOf('\core\event\message_sent', $event);
|
||||
$this->assertEquals(context_system::instance(), $event->get_context());
|
||||
$expected = array(SITEID, 'message', 'write', 'index.php?user=1&id=2&history=1#m3', 1);
|
||||
$this->assertEventLegacyLogData($expected, $event);
|
||||
$url = new moodle_url('/message/index.php', array('user1' => $event->userid, 'user2' => $event->relateduserid));
|
||||
$this->assertEquals($url, $event->get_url());
|
||||
$this->assertEquals(3, $event->other['messageid']);
|
||||
$this->assertEquals(4, $event->other['courseid']);
|
||||
}
|
||||
|
||||
public function test_mesage_sent_via_create_from_ids_without_other_courseid() {
|
||||
|
||||
// Creating a message_sent event without courseid leads to debugging + SITEID.
|
||||
// TODO: MDL-55449 Ensure this leads to exception instead of debugging in Moodle 3.6.
|
||||
$event = \core\event\message_sent::create_from_ids(1, 2, 3);
|
||||
|
||||
// Trigger and capturing the event.
|
||||
$sink = $this->redirectEvents();
|
||||
$event->trigger();
|
||||
$events = $sink->get_events();
|
||||
$event = reset($events);
|
||||
|
||||
$this->assertDebuggingCalled();
|
||||
$this->assertEquals(SITEID, $event->other['courseid']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Test the message viewed event.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue