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, 'type' => $typeindividual,
'users' => [$user1, $user2], 'users' => [$user1, $user2],
'messages' => [$user1, $user2], 'messages' => [$user1, $user2, $user2],
'favourites' => [$user1], 'favourites' => [$user1],
'enabled' => null // Individual conversations cannot be disabled. 'enabled' => null // Individual conversations cannot be disabled.
], ],
[ [
'type' => $typeindividual, 'type' => $typeindividual,
'users' => [$user1, $user3], 'users' => [$user1, $user3],
'messages' => [$user1, $user1], 'messages' => [$user1, $user3, $user1],
'favourites' => [], 'favourites' => [],
'enabled' => null // Individual conversations cannot be disabled. 'enabled' => null // Individual conversations cannot be disabled.
], ],
@ -5729,10 +5729,17 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
'favourites' => [], 'favourites' => [],
'enabled' => true 'enabled' => true
], ],
[
'type' => $typegroup,
'users' => [$user2, $user3, $user4],
'messages' => [$user2, $user3, $user4],
'favourites' => [],
'enabled' => true
],
[ [
'type' => $typegroup, 'type' => $typegroup,
'users' => [$user6, $user7], 'users' => [$user6, $user7],
'messages' => [$user6, $user7], 'messages' => [$user6, $user7, $user7],
'favourites' => [$user6], 'favourites' => [$user6],
'enabled' => false 'enabled' => false
], ],
@ -5751,20 +5758,28 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
'deletemessagesuser' => null, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user5], '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_INDIVIDUAL => 0,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0 \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0
]], ]],
'deletedusers' => [] 'deletedusers' => []
], ],
'No individual conversations, 1 group conversation' => [ 'No individual conversations, 2 group conversations' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => null, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user4], 'arguments' => [$user4],
'expected' => ['favourites' => 0, 'types' => [ 'expectedcounts' => ['favourites' => 0, 'types' => [
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, \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' => [] 'deletedusers' => []
], ],
@ -5773,31 +5788,43 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
'deletemessagesuser' => null, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user1], '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_INDIVIDUAL => 1,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 \core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1
]], ]],
'deletedusers' => [] 'deletedusers' => []
], ],
'1 individual conversation, 1 group conversation' => [ '1 individual conversation, 2 group conversations' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => null, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user2], 'arguments' => [$user2],
'expected' => ['favourites' => 0, 'types' => [ 'expectedcounts' => ['favourites' => 0, 'types' => [
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \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' => [] 'deletedusers' => []
], ],
'1 group conversation only' => [ '2 group conversations only' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => null, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user4], 'arguments' => [$user4],
'expected' => ['favourites' => 0, 'types' => [ 'expectedcounts' => ['favourites' => 0, 'types' => [
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0, \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' => [] 'deletedusers' => []
], ],
@ -5806,7 +5833,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
'deletemessagesuser' => $user1, 'deletemessagesuser' => $user1,
'deletemessages' => [0], 'deletemessages' => [0],
'arguments' => [$user1], '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_INDIVIDUAL => 1,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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' => [ 'All conversation types, delete a message from individual non-favourited, messages remaining' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => $user1, 'deletemessagesuser' => $user1,
'deletemessages' => [2], 'deletemessages' => [3],
'arguments' => [$user1], '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_INDIVIDUAL => 1,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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' => [ 'All conversation types, delete all messages from individual favourited, no messages remaining' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => $user1, 'deletemessagesuser' => $user1,
'deletemessages' => [0, 1], 'deletemessages' => [0, 1, 2],
'arguments' => [$user1], '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_INDIVIDUAL => 1,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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' => [ 'All conversation types, delete all messages from individual non-favourited, no messages remaining' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => $user1, 'deletemessagesuser' => $user1,
'deletemessages' => [2, 3], 'deletemessages' => [3, 4, 5],
'arguments' => [$user1], '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_INDIVIDUAL => 0,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1 \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' => [ 'All conversation types, delete all messages from individual favourited, no messages remaining, different user' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => $user1, 'deletemessagesuser' => $user1,
'deletemessages' => [0, 1], 'deletemessages' => [0, 1, 2],
'arguments' => [$user2], 'arguments' => [$user2],
'expected' => ['favourites' => 0, 'types' => [ 'expectedcounts' => ['favourites' => 0, 'types' => [
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \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' => [] 'deletedusers' => []
], ],
'All conversation types, delete all messages from individual non-favourited, no messages remaining, different user' => [ 'All conversation types, delete all messages from individual non-favourited, no messages remaining, different user' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => $user1, 'deletemessagesuser' => $user1,
'deletemessages' => [2, 3], 'deletemessages' => [3, 4, 5],
'arguments' => [$user3], 'arguments' => [$user3],
'expected' => ['favourites' => 0, 'types' => [ 'expectedcounts' => ['favourites' => 0, 'types' => [
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \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' => [] 'deletedusers' => []
], ],
'All conversation types, delete some messages from group non-favourited, messages remaining,' => [ 'All conversation types, delete some messages from group non-favourited, messages remaining,' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => $user1, 'deletemessagesuser' => $user1,
'deletemessages' => [4, 5], 'deletemessages' => [6, 7],
'arguments' => [$user1], '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_INDIVIDUAL => 1,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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,' => [ 'All conversation types, delete all messages from group non-favourited, no messages remaining,' => [
'conversationConfigs' => $conversations, 'conversationConfigs' => $conversations,
'deletemessagesuser' => $user1, 'deletemessagesuser' => $user1,
'deletemessages' => [4, 5, 6, 7], 'deletemessages' => [6, 7, 8, 9],
'arguments' => [$user1], 'arguments' => [$user1],
'expected' => ['favourites' => 1, 'types' => [ 'expectedcounts' => ['favourites' => 1, 'types' => [
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1, \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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' => [] 'deletedusers' => []
], ],
'All conversation types, another user soft deleted' => [ 'All conversation types, another user soft deleted' => [
@ -5894,7 +5953,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
'deletemessagesuser' => null, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user1], '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_INDIVIDUAL => 1,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user1], '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_INDIVIDUAL => 1,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user6], '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_INDIVIDUAL => 0,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user7], '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_INDIVIDUAL => 0,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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, 'deletemessagesuser' => null,
'deletemessages' => [], 'deletemessages' => [],
'arguments' => [$user8], '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_INDIVIDUAL => 0,
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 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 int $deletemessagesuser The user who is deleting the messages
* @param array $deletemessages The list of messages to delete (by index) * @param array $deletemessages The list of messages to delete (by index)
* @param array $arguments Arguments for the count conversations function * @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. * @param array $deletedusers the array of users to soft delete.
*/ */
public function test_get_conversation_counts( public function test_get_conversation_counts(
@ -5963,7 +6043,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
$deletemessagesuser, $deletemessagesuser,
$deletemessages, $deletemessages,
$arguments, $arguments,
$expected, $expectedcounts,
$expectedunreadcounts,
$deletedusers $deletedusers
) { ) {
$generator = $this->getDataGenerator(); $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); $counts = \core_message\api::get_conversation_counts(...$arguments);
$this->assertEquals($expected['favourites'], $counts['favourites']); $this->assertEquals($expectedcounts['favourites'], $counts['favourites']);
$this->assertEquals($expected['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL], $this->assertEquals($expectedcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL],
$counts['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]); $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() { public function test_get_unread_conversation_counts(
// Get a bunch of conversations, some group, some individual and in different states. $conversationconfigs,
list($user1, $user2, $user3, $user4, $ic1, $ic2, $ic3, $deletemessagesuser,
$gc1, $gc2, $gc3, $gc4, $gc5, $gc6) = $this->create_conversation_test_data(); $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. $deleteuser = !is_null($deletemessagesuser) ? $users[$deletemessagesuser] : null;
$counts = \core_message\api::get_unread_conversation_counts($user1->id); $this->setUser($users[$arguments[0]]);
$this->assertEquals(0, $counts['favourites']); $arguments[0] = $users[$arguments[0]]->id;
$this->assertEquals(2, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); $systemcontext = \context_system::instance();
$this->assertEquals(2, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); $conversations = [];
$messageids = [];
// Mark a couple as favourites. foreach ($conversationconfigs as $config) {
\core_message\api::set_favourite_conversation($ic1->id, $user1->id); $conversation = \core_message\api::create_conversation(
\core_message\api::set_favourite_conversation($gc2->id, $user1->id); $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); foreach ($config['messages'] as $userfromindex) {
$this->assertEquals(2, $counts['favourites']); $userfrom = $users[$userfromindex];
$this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); $messageids[] = testhelper::send_fake_message_to_conversation($userfrom, $conversation->id);
$this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); }
// Mark a conversation as read and confirm it's not included in the unread counts for its respective type. foreach ($config['favourites'] as $userfromindex) {
\core_message\api::mark_all_messages_as_read($user1->id, $ic1->id); $userfrom = $users[$userfromindex];
$counts = \core_message\api::get_unread_conversation_counts($user1->id); $usercontext = \context_user::instance($userfrom->id);
$this->assertEquals(1, $counts['favourites']); $ufservice = \core_favourites\service_factory::get_service_for_user_context($usercontext);
$this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]); $ufservice->create_favourite('core_message', 'message_conversations', $conversation->id, $systemcontext);
$this->assertEquals(1, $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]); }
}
/** $conversations[] = $conversation;
* 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]);
}
/** foreach ($deletemessages as $messageindex) {
* Test verifying that those linked conversations which have been disabled are excluded from unread counts. \core_message\api::delete_message($deleteuser->id, $messageids[$messageindex]);
*/ }
public function test_get_unread_conversations_count_disabled_conversations() {
global $DB;
// Create some users. foreach ($deletedusers as $deleteduser) {
$user1 = self::getDataGenerator()->create_user(); delete_user($users[$deleteduser]);
$user2 = self::getDataGenerator()->create_user(); }
$user3 = self::getDataGenerator()->create_user();
$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->assertEquals($expectedunreadcounts['favourites'], $counts['favourites']);
$this->setAdminUser(); $this->assertEquals($expectedunreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL],
$this->getDataGenerator()->enrol_user($user1->id, $course1->id); $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL]);
$this->getDataGenerator()->enrol_user($user2->id, $course1->id); $this->assertEquals($expectedunreadcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP],
$this->getDataGenerator()->enrol_user($user3->id, $course1->id); $counts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP]);
$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]);
} }
/** /**