diff --git a/message/classes/helper.php b/message/classes/helper.php index 99ecdfabe4c..58dd7aa174e 100644 --- a/message/classes/helper.php +++ b/message/classes/helper.php @@ -589,6 +589,9 @@ class helper { } } + // Return member information in the same order as the userids originally provided. + $members = array_replace(array_flip($userids), $members); + return $members; } diff --git a/message/tests/helper_test.php b/message/tests/helper_test.php new file mode 100644 index 00000000000..8de40f6493f --- /dev/null +++ b/message/tests/helper_test.php @@ -0,0 +1,70 @@ +. + +/** + * Contains a test class for the message helper. + * + * @package core_message + * @category test + * @copyright 2018 Jake Dallimore + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/message/tests/messagelib_test.php'); + +/** + * Tests for the message helper class. + * + * @package core_message + * @category test + * @copyright 2018 Jake Dallimore + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class core_message_helper_testcase extends advanced_testcase { + + public function setUp() { + $this->resetAfterTest(true); + } + + public function test_get_member_info_ordering() { + // Create a conversation with several users. + $user1 = self::getDataGenerator()->create_user(); + $user2 = self::getDataGenerator()->create_user(); + $user3 = self::getDataGenerator()->create_user(); + $user4 = self::getDataGenerator()->create_user(); + + \core_message\api::create_conversation( + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, + [ + $user1->id, + $user2->id, + $user3->id, + $user4->id, + ], + 'Group conversation' + ); + + // Verify that the member information comes back in the same order that we specified in the input array. + $memberinfo = \core_message\helper::get_member_info($user1->id, [$user3->id, $user4->id, $user2->id]); + $this->assertEquals($user3->id, array_shift($memberinfo)->id); + $this->assertEquals($user4->id, array_shift($memberinfo)->id); + $this->assertEquals($user2->id, array_shift($memberinfo)->id); + } +}