mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
MDL-63466 core_message: don't reorder messages when formatting
- Removed the reordering code from helper::get_conversation_messages() - Added unit test confirming sort param behaviour for the api::get_conversations_messages() method.
This commit is contained in:
parent
d1e8e69d85
commit
b95e4c786c
2 changed files with 67 additions and 7 deletions
|
@ -202,13 +202,6 @@ class helper {
|
|||
// Store the messages.
|
||||
$arrmessages = array();
|
||||
|
||||
// We always view messages from oldest to newest, ensure we have it in that order.
|
||||
$lastmessage = end($messages);
|
||||
$firstmessage = reset($messages);
|
||||
if ($lastmessage->timecreated < $firstmessage->timecreated) {
|
||||
$messages = array_reverse($messages);
|
||||
}
|
||||
|
||||
foreach ($messages as $message) {
|
||||
// Store the message information.
|
||||
$msg = new \stdClass();
|
||||
|
|
|
@ -1472,6 +1472,73 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
|||
$this->assertEquals(3, count($members));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test verifying the sorting param for get_conversation_messages is respected().
|
||||
*/
|
||||
public function test_get_conversation_messages_sorting() {
|
||||
// Create some users.
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
$user3 = self::getDataGenerator()->create_user();
|
||||
|
||||
// Create conversations - 1 group and 1 individual.
|
||||
$conversation = \core_message\api::create_conversation(
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
|
||||
[$user1->id, $user2->id]
|
||||
);
|
||||
$conversation2 = \core_message\api::create_conversation(
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP,
|
||||
[$user1->id, $user2->id, $user3->id]
|
||||
);
|
||||
|
||||
// Send some messages back and forth.
|
||||
$time = 1;
|
||||
$m1id = testhelper::send_fake_message_to_conversation($user1, $conversation->id, 'Yo!', $time + 1);
|
||||
$m2id = testhelper::send_fake_message_to_conversation($user2, $conversation->id, 'Sup mang?', $time + 2);
|
||||
$m3id = testhelper::send_fake_message_to_conversation($user1, $conversation->id, 'Writing PHPUnit tests!', $time + 3);
|
||||
$m4id = testhelper::send_fake_message_to_conversation($user1, $conversation->id, 'Word.', $time + 4);
|
||||
|
||||
$gm1id = testhelper::send_fake_message_to_conversation($user1, $conversation2->id, 'Yo!', $time + 1);
|
||||
$gm2id = testhelper::send_fake_message_to_conversation($user2, $conversation2->id, 'Sup mang?', $time + 2);
|
||||
$gm3id = testhelper::send_fake_message_to_conversation($user3, $conversation2->id, 'Writing PHPUnit tests!', $time + 3);
|
||||
$gm4id = testhelper::send_fake_message_to_conversation($user1, $conversation2->id, 'Word.', $time + 4);
|
||||
|
||||
// The person doing the search.
|
||||
$this->setUser($user1);
|
||||
|
||||
// Retrieve the messages using default sort ('timecreated ASC') and verify ordering.
|
||||
$convmessages = \core_message\api::get_conversation_messages($user1->id, $conversation->id);
|
||||
$messages = $convmessages['messages'];
|
||||
$this->assertEquals($m1id, $messages[0]->id);
|
||||
$this->assertEquals($m2id, $messages[1]->id);
|
||||
$this->assertEquals($m3id, $messages[2]->id);
|
||||
$this->assertEquals($m4id, $messages[3]->id);
|
||||
|
||||
// Retrieve the messages without specifying DESC sort ordering, and verify ordering.
|
||||
$convmessages = \core_message\api::get_conversation_messages($user1->id, $conversation->id, 0, 0, 'timecreated DESC');
|
||||
$messages = $convmessages['messages'];
|
||||
$this->assertEquals($m1id, $messages[3]->id);
|
||||
$this->assertEquals($m2id, $messages[2]->id);
|
||||
$this->assertEquals($m3id, $messages[1]->id);
|
||||
$this->assertEquals($m4id, $messages[0]->id);
|
||||
|
||||
// Retrieve the messages using default sort ('timecreated ASC') and verify ordering.
|
||||
$convmessages = \core_message\api::get_conversation_messages($user1->id, $conversation2->id);
|
||||
$messages = $convmessages['messages'];
|
||||
$this->assertEquals($gm1id, $messages[0]->id);
|
||||
$this->assertEquals($gm2id, $messages[1]->id);
|
||||
$this->assertEquals($gm3id, $messages[2]->id);
|
||||
$this->assertEquals($gm4id, $messages[3]->id);
|
||||
|
||||
// Retrieve the messages without specifying DESC sort ordering, and verify ordering.
|
||||
$convmessages = \core_message\api::get_conversation_messages($user1->id, $conversation2->id, 0, 0, 'timecreated DESC');
|
||||
$messages = $convmessages['messages'];
|
||||
$this->assertEquals($gm1id, $messages[3]->id);
|
||||
$this->assertEquals($gm2id, $messages[2]->id);
|
||||
$this->assertEquals($gm3id, $messages[1]->id);
|
||||
$this->assertEquals($gm4id, $messages[0]->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test retrieving conversation messages by providing a minimum timecreated value.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue