From 36fabf72c044ae58d72a23d998b09009ed01c685 Mon Sep 17 00:00:00 2001 From: Jake Dallimore Date: Mon, 26 Nov 2018 10:54:29 +0800 Subject: [PATCH] MDL-64140 core_message: test unread counts with dataprovider in api The 3 methods used to test this function are superceded by the cases in the dataprovider, so let's remove these and use the provider instead. --- message/tests/api_test.php | 307 +++++++++++++++++++++++-------------- 1 file changed, 192 insertions(+), 115 deletions(-) diff --git a/message/tests/api_test.php b/message/tests/api_test.php index 5370fc3b8c2..9090af18cb6 100644 --- a/message/tests/api_test.php +++ b/message/tests/api_test.php @@ -5711,14 +5711,14 @@ class core_message_api_testcase extends core_message_messagelib_testcase { [ 'type' => $typeindividual, 'users' => [$user1, $user2], - 'messages' => [$user1, $user2], + 'messages' => [$user1, $user2, $user2], 'favourites' => [$user1], 'enabled' => null // Individual conversations cannot be disabled. ], [ 'type' => $typeindividual, 'users' => [$user1, $user3], - 'messages' => [$user1, $user1], + 'messages' => [$user1, $user3, $user1], 'favourites' => [], 'enabled' => null // Individual conversations cannot be disabled. ], @@ -5729,10 +5729,17 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'favourites' => [], 'enabled' => true ], + [ + 'type' => $typegroup, + 'users' => [$user2, $user3, $user4], + 'messages' => [$user2, $user3, $user4], + 'favourites' => [], + 'enabled' => true + ], [ 'type' => $typegroup, 'users' => [$user6, $user7], - 'messages' => [$user6, $user7], + 'messages' => [$user6, $user7, $user7], 'favourites' => [$user6], 'enabled' => false ], @@ -5751,20 +5758,28 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user5], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 ]], 'deletedusers' => [] ], - 'No individual conversations, 1 group conversation' => [ + 'No individual conversations, 2 group conversations' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user4], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, - \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 ]], 'deletedusers' => [] ], @@ -5773,31 +5788,43 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user1], - 'expected' => ['favourites' => 1, 'types' => [ + 'expectedcounts' => ['favourites' => 1, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + ]], + 'expectedunreadcounts' => ['favourites' => 1, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], 'deletedusers' => [] ], - '1 individual conversation, 1 group conversation' => [ + '1 individual conversation, 2 group conversations' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user2], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, - \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 ]], 'deletedusers' => [] ], - '1 group conversation only' => [ + '2 group conversations only' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user4], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, - \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 ]], 'deletedusers' => [] ], @@ -5806,7 +5833,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'deletemessagesuser' => $user1, 'deletemessages' => [0], 'arguments' => [$user1], - 'expected' => ['favourites' => 1, 'types' => [ + 'expectedcounts' => ['favourites' => 1, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + ]], + 'expectedunreadcounts' => ['favourites' => 1, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], @@ -5815,9 +5846,13 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'All conversation types, delete a message from individual non-favourited, messages remaining' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => $user1, - 'deletemessages' => [2], + 'deletemessages' => [3], 'arguments' => [$user1], - 'expected' => ['favourites' => 1, 'types' => [ + 'expectedcounts' => ['favourites' => 1, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + ]], + 'expectedunreadcounts' => ['favourites' => 1, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], @@ -5826,9 +5861,13 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'All conversation types, delete all messages from individual favourited, no messages remaining' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => $user1, - 'deletemessages' => [0, 1], + 'deletemessages' => [0, 1, 2], 'arguments' => [$user1], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], @@ -5837,9 +5876,13 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'All conversation types, delete all messages from individual non-favourited, no messages remaining' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => $user1, - 'deletemessages' => [2, 3], + 'deletemessages' => [3, 4, 5], 'arguments' => [$user1], - 'expected' => ['favourites' => 1, 'types' => [ + 'expectedcounts' => ['favourites' => 1, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + ]], + 'expectedunreadcounts' => ['favourites' => 1, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], @@ -5848,31 +5891,43 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'All conversation types, delete all messages from individual favourited, no messages remaining, different user' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => $user1, - 'deletemessages' => [0, 1], + 'deletemessages' => [0, 1, 2], 'arguments' => [$user2], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, - \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 ]], 'deletedusers' => [] ], 'All conversation types, delete all messages from individual non-favourited, no messages remaining, different user' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => $user1, - 'deletemessages' => [2, 3], + 'deletemessages' => [3, 4, 5], 'arguments' => [$user3], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, - \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2 ]], 'deletedusers' => [] ], 'All conversation types, delete some messages from group non-favourited, messages remaining,' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => $user1, - 'deletemessages' => [4, 5], + 'deletemessages' => [6, 7], 'arguments' => [$user1], - 'expected' => ['favourites' => 1, 'types' => [ + 'expectedcounts' => ['favourites' => 1, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + ]], + 'expectedunreadcounts' => ['favourites' => 1, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], @@ -5881,12 +5936,16 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'All conversation types, delete all messages from group non-favourited, no messages remaining,' => [ 'conversationConfigs' => $conversations, 'deletemessagesuser' => $user1, - 'deletemessages' => [4, 5, 6, 7], + 'deletemessages' => [6, 7, 8, 9], 'arguments' => [$user1], - 'expected' => ['favourites' => 1, 'types' => [ + 'expectedcounts' => ['favourites' => 1, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], + 'expectedunreadcounts' => ['favourites' => 1, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 + ]], 'deletedusers' => [] ], 'All conversation types, another user soft deleted' => [ @@ -5894,7 +5953,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user1], - 'expected' => ['favourites' => 1, 'types' => [ + 'expectedcounts' => ['favourites' => 1, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + ]], + 'expectedunreadcounts' => ['favourites' => 1, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], @@ -5905,7 +5968,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user1], - 'expected' => ['favourites' => 1, 'types' => [ + 'expectedcounts' => ['favourites' => 1, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 + ]], + 'expectedunreadcounts' => ['favourites' => 1, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 ]], @@ -5916,7 +5983,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user6], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 ]], @@ -5927,7 +5998,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user7], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 ]], @@ -5938,7 +6013,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase { 'deletemessagesuser' => null, 'deletemessages' => [], 'arguments' => [$user8], - 'expected' => ['favourites' => 0, 'types' => [ + 'expectedcounts' => ['favourites' => 0, 'types' => [ + \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, + \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 + ]], + 'expectedunreadcounts' => ['favourites' => 0, 'types' => [ \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 ]], @@ -5955,7 +6034,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase { * @param int $deletemessagesuser The user who is deleting the messages * @param array $deletemessages The list of messages to delete (by index) * @param array $arguments Arguments for the count conversations function - * @param array $expected The expected result + * @param array $expectedcounts the expected conversation counts + * @param array $expectedunreadcounts the expected unread conversation counts * @param array $deletedusers the array of users to soft delete. */ public function test_get_conversation_counts( @@ -5963,7 +6043,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase { $deletemessagesuser, $deletemessages, $arguments, - $expected, + $expectedcounts, + $expectedunreadcounts, $deletedusers ) { $generator = $this->getDataGenerator(); @@ -6019,10 +6100,10 @@ class core_message_api_testcase extends core_message_messagelib_testcase { $counts = \core_message\api::get_conversation_counts(...$arguments); - $this->assertEquals($expected['favourites'], $counts['favourites']); - $this->assertEquals($expected['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL], + $this->assertEquals($expectedcounts['favourites'], $counts['favourites']); + $this->assertEquals($expectedcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL], $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); - $this->assertEquals($expected['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP], + $this->assertEquals($expectedcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP], $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); } @@ -6056,90 +6137,86 @@ class core_message_api_testcase extends core_message_messagelib_testcase { } /** - * Test verifying the correctness of unread counts returned. + * Test the get_unread_conversation_counts() function. + * + * @dataProvider test_get_conversation_counts_test_cases() + * @param array $conversationconfigs Conversations to create + * @param int $deletemessagesuser The user who is deleting the messages + * @param array $deletemessages The list of messages to delete (by index) + * @param array $arguments Arguments for the count conversations function + * @param array $expectedcounts the expected conversation counts + * @param array $expectedunreadcounts the expected unread conversation counts + * @param array $deletedusers the list of users to soft-delete. */ - public function test_get_unread_conversations_count() { - // Get a bunch of conversations, some group, some individual and in different states. - list($user1, $user2, $user3, $user4, $ic1, $ic2, $ic3, - $gc1, $gc2, $gc3, $gc4, $gc5, $gc6) = $this->create_conversation_test_data(); + public function test_get_unread_conversation_counts( + $conversationconfigs, + $deletemessagesuser, + $deletemessages, + $arguments, + $expectedcounts, + $expectedunreadcounts, + $deletedusers + ) { + $this->resetAfterTest(); + $generator = $this->getDataGenerator(); + $users = [ + $generator->create_user(), + $generator->create_user(), + $generator->create_user(), + $generator->create_user(), + $generator->create_user(), + $generator->create_user(), + $generator->create_user(), + $generator->create_user() + ]; - // Without favourites. - $counts = \core_message\api::get_unread_conversation_counts($user1->id); - $this->assertEquals(0, $counts['favourites']); - $this->assertEquals(2, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); - $this->assertEquals(2, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); + $deleteuser = !is_null($deletemessagesuser) ? $users[$deletemessagesuser] : null; + $this->setUser($users[$arguments[0]]); + $arguments[0] = $users[$arguments[0]]->id; + $systemcontext = \context_system::instance(); + $conversations = []; + $messageids = []; - // Mark a couple as favourites. - \core_message\api::set_favourite_conversation($ic1->id, $user1->id); - \core_message\api::set_favourite_conversation($gc2->id, $user1->id); + foreach ($conversationconfigs as $config) { + $conversation = \core_message\api::create_conversation( + $config['type'], + array_map(function($userindex) use ($users) { + return $users[$userindex]->id; + }, $config['users']), + null, + ($config['enabled'] ?? true) + ); - $counts = \core_message\api::get_unread_conversation_counts($user1->id); - $this->assertEquals(2, $counts['favourites']); - $this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); - $this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); + foreach ($config['messages'] as $userfromindex) { + $userfrom = $users[$userfromindex]; + $messageids[] = testhelper::send_fake_message_to_conversation($userfrom, $conversation->id); + } - // Mark a conversation as read and confirm it's not included in the unread counts for its respective type. - \core_message\api::mark_all_messages_as_read($user1->id, $ic1->id); - $counts = \core_message\api::get_unread_conversation_counts($user1->id); - $this->assertEquals(1, $counts['favourites']); - $this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); - $this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); - } + foreach ($config['favourites'] as $userfromindex) { + $userfrom = $users[$userfromindex]; + $usercontext = \context_user::instance($userfrom->id); + $ufservice = \core_favourites\service_factory::get_service_for_user_context($usercontext); + $ufservice->create_favourite('core_message', 'message_conversations', $conversation->id, $systemcontext); + } - /** - * Test verifying the unread counts are 0 if no conversations exist. - */ - public function test_get_unread_conversations_count_no_conversations() { - $user1 = self::getDataGenerator()->create_user(); - $counts = \core_message\api::get_unread_conversation_counts($user1->id); - $this->assertEquals(0, $counts['favourites']); - $this->assertEquals(0, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); - $this->assertEquals(0, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); - } + $conversations[] = $conversation; + } - /** - * Test verifying that those linked conversations which have been disabled are excluded from unread counts. - */ - public function test_get_unread_conversations_count_disabled_conversations() { - global $DB; + foreach ($deletemessages as $messageindex) { + \core_message\api::delete_message($deleteuser->id, $messageids[$messageindex]); + } - // Create some users. - $user1 = self::getDataGenerator()->create_user(); - $user2 = self::getDataGenerator()->create_user(); - $user3 = self::getDataGenerator()->create_user(); + foreach ($deletedusers as $deleteduser) { + delete_user($users[$deleteduser]); + } - $course1 = $this->getDataGenerator()->create_course(); + $counts = \core_message\api::get_unread_conversation_counts(...$arguments); - // Create a group with a linked conversation and a valid image. - $this->setAdminUser(); - $this->getDataGenerator()->enrol_user($user1->id, $course1->id); - $this->getDataGenerator()->enrol_user($user2->id, $course1->id); - $this->getDataGenerator()->enrol_user($user3->id, $course1->id); - $group1 = $this->getDataGenerator()->create_group([ - 'courseid' => $course1->id, - 'enablemessaging' => 1, - ]); - - // Add users to group1. - $this->getDataGenerator()->create_group_member(array('groupid' => $group1->id, 'userid' => $user1->id)); - $this->getDataGenerator()->create_group_member(array('groupid' => $group1->id, 'userid' => $user2->id)); - - $conversations = \core_message\api::get_conversations($user1->id); - $convid = $conversations[0]->id; - - // Send a message to the group conversation as user 2. - testhelper::send_fake_message_to_conversation($user2, $convid, 'Hello world!'); - - // Verify the unread count is 1. - $counts = \core_message\api::get_unread_conversation_counts($user1->id); - $this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); - - // Now, disabled the linked conversation. - $DB->set_field('message_conversations', 'enabled', false, ['id' => $convid]); - - // Verify the unread count is no longer 1 as the conversation has been excluded. - $counts = \core_message\api::get_unread_conversation_counts($user1->id); - $this->assertEquals(0, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); + $this->assertEquals($expectedunreadcounts['favourites'], $counts['favourites']); + $this->assertEquals($expectedunreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL], + $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); + $this->assertEquals($expectedunreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP], + $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); } /**