mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
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:
parent
b402a163e3
commit
36fabf72c0
1 changed files with 192 additions and 115 deletions
|
@ -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]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue