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.
This commit is contained in:
Jake Dallimore 2018-11-26 10:54:29 +08:00
parent b402a163e3
commit 36fabf72c0

View file

@ -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]);
}
/**